【发布时间】:2015-01-06 19:40:58
【问题描述】:
在下面的代码中,我有一个 A 类的对象。我用0 的值启动它的公共成员变量。然后我调用它的方法ReplaceThis 执行命令*this = A();。然后我打印同一个对象的值和地址。该值始终是一些随机的乱码,而地址与之前的ReplaceThis 相同。这让我很困惑,因为地址不变表明对象没有在内存中移动,但是即使A的构造函数为空,值也会变成一些随机数据。
如果有人能逐步解释这段代码的内容,我将不胜感激!
代码:
#include <iostream>
class A
{
public:
int Data;
A() {}
void ReplaceThis() { *this = A(); }
};
int main()
{
A foo;
foo.Data = 0;
std::cout << "Initial foo data: " << foo.Data << std::endl;
std::cout << "Initial foo address: " << &foo << std::endl;
foo.ReplaceThis();
std::cout << "Replaced foo data: " << foo.Data << std::endl;
std::cout << "Replaced foo address: " << &foo << std::endl;
}
输出:
Initial foo data: 0
Initial foo address: 0x7fff604594a0
Replaced foo data: 6296256
Replaced foo address: 0x7fff604594a0
【问题讨论】:
标签: c++ constructor this