赋值运算符重载函数是什么?能举个例子码
时间: 2023-05-31 19:01:40 浏览: 112
运算符重载函数
赋值运算符重载函数是一种特殊的成员函数,用于对类对象进行赋值操作时调用。该函数必须返回一个引用类型,以便支持连续赋值操作。
以下是一个例子:
```c++
class MyString {
public:
MyString(const char* str = "") {
if (str) {
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}
else {
m_data = new char[1];
*m_data = '\0';
}
}
MyString(const MyString& other) {
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
~MyString() {
delete[] m_data;
}
MyString& operator=(const MyString& other) {
if (this != &other) {
delete[] m_data;
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
return *this;
}
private:
char* m_data;
};
```
在上面的例子中,我们定义了一个名为MyString的类,它包含一个指向字符数组的指针m_data,并实现了赋值运算符重载函数。该函数首先检查是否进行了自我赋值操作,如果是则直接返回当前对象的引用。否则,它会先删除当前对象m_data指向的内存,然后为m_data分配新的内存,并将other.m_data的内容复制到m_data中。最后,函数返回当前对象的引用,以便支持连续赋值操作。
阅读全文