【发布时间】:2020-01-09 01:00:03
【问题描述】:
我有一个带有引用成员 num 的 A 类。我编写了一个复制构造函数,在初始化列表中初始化num。但是结果似乎很奇怪,打印出来的值不应该是100吗?我的程序什么时候修改了a.num和aa.num的值?
#include <iostream>
using namespace std;
class A{
public:
int& num;
A(int n):num(n){}
A(const A& obj):num(obj.num){}
void print(){
cout << num << endl;
}
};
int main(){
A a(100);
A aa = a;
a.print(); //Expected to be 100, but it isn't
aa.print(); //Also expected to be 100, but it isn't
//The address of a.num and aa.num are the same, so both of them are referencing to the same place. But the question is why the value isn't 100 but a strange value
cout << &(a.num) << " " << &(aa.num) <<endl;
}
输出是:
-1077613148
-1077613148
0xbfc4ed94 0xbfc4ed94
【问题讨论】:
-
“我有一个带有引用成员的 A 类”。这就是你的问题。
标签: c++ reference copy-constructor