C++赋值运算符重载举例
时间: 2024-10-12 18:09:45 浏览: 42
赋值运算符重载-运算符重载详解
在C++中,赋值运算符`=`通常用于将右侧表达式的值复制到左侧对象中。然而,你可以选择重载它以提供自定义的行为。例如,如果你正在创建一个可以改变大小的对象(如动态数组),你可能会希望在赋值操作时自动调整容量。下面是一个简单的例子:
```cpp
class DynamicArray {
private:
int* data;
int capacity;
int size;
public:
// ...其他构造函数、析构函数等
// 赋值运算符重载
DynamicArray& operator=(const DynamicArray& other) {
if (this != &other) { // 避免自我赋值导致无限递归
if (size + other.size > capacity) {
resize(size + other.size); // 扩容
}
memcpy(data, other.data, sizeof(int) * size); // 深拷贝数据
size += other.size;
}
return *this;
}
// 其他成员函数...
private:
void resize(int newCapacity) {
// 实现扩大数组容量的具体逻辑
}
};
```
在这个例子中,当一个 `DynamicArray` 对象被赋值给另一个更大的对象时,`operator=` 会检查容量是否足够,如果不够,则先扩容再进行数据复制。
阅读全文