C++ 引用作用域中的值会产生垃圾
我想编写一个引用作为字段的类,但我发现即使是这个初始化引用并打印其值的简单代码也失败了:C++ 引用作用域中的值会产生垃圾,c++,class,memory,reference,field,C++,Class,Memory,Reference,Field,我想编写一个引用作为字段的类,但我发现即使是这个初始化引用并打印其值的简单代码也失败了: struct Referencer { explicit Referencer(int in) : num(in) {} void print() { std::cout << num << std::endl; } int # }; int main() { int longlived = 500; R
struct Referencer {
explicit Referencer(int in) : num(in) {}
void print() {
std::cout << num << std::endl;
}
int #
};
int main() {
int longlived = 500;
Referencer ref(longlived);
ref.print();
}
结构引用器{
显式引用器(int-in):num(in){
作废打印(){
std::cout引用器
的构造函数按值获取参数。因此中的保存长寿命中值的副本。然后,您将num
初始化为中的引用,一旦构造函数返回,该引用就会被销毁
如果希望num
保存对构造函数中用作参数的对象的引用,请通过引用传递in
,如explicit Referencer(int&in):num(in){/p>仔细查看Referencer(int-in):num(in)
in
在您离开构造函数后不再在范围内。可能您的意思是int&in
。“我的理解是变量longlived
与引用器的实例具有相同的生存期。”当然可以。但是..您的引用器::num
没有引用长寿命的。好吧,我错了。为了更好地理解,请尝试对指针执行相同的操作。。。