This question already has answers here:
What are the basic rules and idioms for operator overloading?
(7个答案)
5年前关闭。
当使用运算符重载时,该示例使用引用作为参数,在比较地址是否相等时,为什么在aMess上使用&,为什么不使用if(this == aMess)? &aMess是参考地址吗?
(7个答案)
5年前关闭。
// Overloaded assignment operator for CMessage objects
CMessage& operator=(const CMessage& aMess)
{
if(this == &aMess) // Check addresses, if equal
return *this; // return the 1st operand
// Release memory for 1st operand
delete[] pmessage;
pmessage = new char[strlen(aMess.pmessage) + 1];
// Copy 2nd operand string to 1st
strcpy_s(this- > pmessage, strlen(aMess.pmessage)+1, aMess.pmessage);
// Return a reference to 1st operand
return *this;
}
当使用运算符重载时,该示例使用引用作为参数,在比较地址是否相等时,为什么在aMess上使用&,为什么不使用if(this == aMess)? &aMess是参考地址吗?
最佳答案
&aMess是参考地址吗?
是。if(this == &aMess)
用于通过比较它们的地址来检查它们是否是同一对象。if(*this == aMess)
用于通过比较它们的值来检查它们是否相等。
为什么不使用if(this == aMess)?if(this == aMess)
没有意义,因为它们不是同一类型。
关于c++ - 使用引用地址的C++运算符重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23222466/
10-11 17:09