|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我是小白。正在学习小甲鱼的C++快速入门。在第36讲副本构造器中有这样的一段代码:class MyClass
{
public:
MyClass(int *p);
~MyClass();
MyClass &operator=(const MyClass &rhs);
void print();
private:
int * ptr; //定义了指向整型的指针变量
};
MyClass::MyClass(int *p)
{
ptr=p;
}
MyClass::~MyClass()
{
delete ptr;
}
MyClass &MyClass::operator=(const MyClass &rhs)
{
if(this!=&rhs) //请问这句比较的是ptr的值还是ptr指向的值啊?
{
delete ptr;
ptr=new int;
*ptr=*rhs.ptr;
}
else
std::cout<<" 赋值号两边为相同对象,不做处理\n";
return *this;
}
void MyClass::print()
{
std::cout<<*ptr<<std::endl;
}
我个人猜测 if(this!=&rhs) 这条语句应该是比较的指针指向的值是否相同。但是又有点犹豫。因为毕竟类MyClass当中包含的属性是指针。而指针的值实际上是地址。应该比较的是地址的相同或不同。这里比较纠结。请大神相助。谢谢
|
|