#关于C++中this指针#不能用this指针给对象赋值吗

2025-02-27 22:17:00
推荐回答(2个)
回答1:

不是one没赋给three,而是num three = one.equal()这句调用的是拷贝构造函数num(num&);

网上搜一下初始化与赋值的区别吧

而你拷贝构造函数num(num&)里并没有给内部成员初始化或者赋值。

顺便说一句,正确的拷贝构造函数是num(const num& ); const最好要有。

num(const num& pr):n(pr.n)
{

}

回答2:

你equal()返回的是值,也就是把将*this作为参数进行构造,而第16行的构造函数并没有进行初始化,所以返回了错误的类。
顺便插一句,第16行的构造函数,在标准C++中构造函数不允许传址,应该传常量,虽然VS不会报错,但不能保证在所有平台上都不会报错。