提问人:Aditya Prakash 提问时间:12/11/2021 最后编辑:Vlad from MoscowAditya Prakash 更新时间:12/11/2021 访问量:341
int &x 声明在 C++ [复制] 中的类定义中有什么意义
What is the significance of int &x declaration in class definition in C++ [duplicate]
问:
class Pointer {
private:
int &x;
public:
Pointer(int &y) : x(y) {}
int getT() { return x; }
};
int main()
{
int w = 40;
Pointer test(w);
std::cout << &test <<' ' << &w;
}
int &x 声明在类定义中的意义是什么?我知道作为构造函数的参数传递的 int &y 是通过引用传递的值,但是 int &x 呢,因为这种类型的声明在 main() 函数中向我展示了一个错误?
答:
2赞
Vlad from Moscow
12/11/2021
#1
在构造函数声明中的这两种情况下
Pointer(int &y) : x(y) {}
并在数据成员声明中
int &x;
有声明的引用。
调用构造函数后
Pointer test(w);
对象测试包含对通过引用传递的对象的引用。w
例如,你可以写
int w = 40;
Pointer test(w);
std::cout << test.get() << '\n';
输出将是
40
现在,您可以更改变量,例如w
w = 100;
和这句话
std::cout << test.get() << '\n';
将输出
100
因为它通过引用输出存储在对象测试中的同一对象的值。
当被引用的对象本身处于活动状态时,引用在对象中将有效。x
test
w
评论
x
int& y
int
Pointer test(w);
test.x
w
int &getT()
std::cout << &test.getT() << ' ' << &w
w
main
x
x
t
getT
getX
x
Pointer
w
w
int