在C++中,重载赋值操作符的两个方向是拷贝赋值和移动赋值。
operator=
,并且返回一个引用类型的值。class MyClass {
public:
// 拷贝赋值操作符的重载
MyClass& operator=(const MyClass& other) {
// 检查是否为自我赋值
if (this == &other) {
return *this;
}
// 执行赋值操作
// ...
return *this;
}
};
operator=
,并且返回一个引用类型的值。class MyClass {
public:
// 移动赋值操作符的重载
MyClass& operator=(MyClass&& other) noexcept {
// 检查是否为自我赋值
if (this == &other) {
return *this;
}
// 释放当前对象的资源
// ...
// 转移资源所有权
// ...
return *this;
}
};
需要注意的是,在重载赋值操作符时,通常需要进行自我赋值的检查,以避免出现错误。此外,移动赋值操作符通常需要使用右值引用(&&)来接收参数,并且应该标记为noexcept
,表示该操作不会抛出异常。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云