Khi tìm hiểu về tái định nghĩa của toán tử gán, mình hơi có chút khó hiểu khi định nghĩa nó. Sau đây mình trích dẫn 1 đoạn mong mọi người giúp đỡ :
class StringClass
{ public:
...
void someProcessing( );
...
StringClass& operator=(const StringClass& rightSide);
...
private: char *a; //Dynamic array for characters in the string
int capacity; //size of dynamic array a
int length; //Number of characters in a
};
....
s1 = s2; //s1 and s2 in the class StringClass
/ /Khi hàm được gọi (s1=s2).someProcessing();
....
// Định nghĩa tái định nghĩa toán tử gán sử dụng con trỏ this để return object ở phía trái toán tử = (left-sight)
//This version does not work in all cases .????
-----
StringClass& StringClass::operator = (const StringClass& rightSide)
{
capacity = rightSide.capacity;
length = rightSide.length;
delete [] a;
a = new char[capacity];
for (int i = 0; i < length; i++)
a[i] = rightSide.a[i];
return *this;
}
Điều gì sẽ xảy ra nếu có cùng object ở 2 bên toán tử gán.?
Mọi người có thể giải thích rõ hơn về toán tử này với ak? Thanks!
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?