我有这个代码:
#include <iostream>
using namespace std;
struct X {
int a = 1;
};
struct Y {
X &_x;
Y(X &x) : _x(x) {}
};
// intentionally typoed version of Y, without the reference in the constructor
struct Z {
X &_x;
Z(X x) : _x(x) {}
};
int main() {
X x;
Y y(x);
Z z(x);
cout << "x: " << &x << endl;
cout << "y.x: " << &y._x << endl;
cout << "z.x: " << &z._x << endl;
}
我一直发现自己忘记了&
这种格式的类的构造函数。
这将输出以下内容:
x: 0xbfa195f8
y.x: 0xbfa195f8
z.x: 0xbfa195fc
y
为什么在和的情况下行为不同z
?
为什么在构造函数中X &_x
使用类型实例初始化成员不是错误?X
Y