我在 C++ 中有两个构造函数,一个构造函数调用另一个构造函数,以免重复初始化逻辑。
#include <iostream>
#include <memory>
using namespace std;
class A
{
int x;
int y;
public:
A(int x)
{
cout << this << endl;
this->x = x;
}
A()
{
cout << this << endl;
A(20);
}
...
};
有趣的是 A() 调用了 A(int),但是 this 指针指向不同的地址。为什么是这样?还是这是 g++ 错误?
int main(int argc, char *argv[]) {
A* a = new A();
}
0x7fa8dbc009d0 <-- from A()
0x7fff67d660d0 <-- from A(int)