C 参考class对象的返回 - 为什么不工作
C++ reference return of class object- why not working?
如果我使用以下代码,那么为什么在以下两种情况下ouput相同:
class Test
{
public:
int data;
Test() { data = 9; }
Test& myfunction ();
void print() { cout << data<<endl; }
};
Test m;
Test& Test::myfunction ()
{
return m;
};
int main()
{
Test b;
Test a;
b=a.myfunction();
b.print();
m.data=7;
b.print();
return 0;
}
在上面的代码中,为什么" b.print()"即使在我更改了'm'的'数据'...?
之后,在屏幕上输出相同的数据'B'是对" M"的引用。因此,如果我更改" m"的"数据"的值," b"的"数据"值也应自动更改...
以上代码的输出是:
9
9//为什么不7?
,如果您写
,您将获得相同的结果Test a;
Test &b = a.myfunction();
至于您的代码
Test b;
Test a;
b=a.myfunction();
然后b是一个单独的对象,已分配了m的副本。因此,任何M的更改都不会影响b。b未定义为参考。
相关文章:
- 抑制警告C4996:为什么不工作
- 为什么多个递减运算符在 C 中工作时不工作C++?
- 为什么 openMP 不工作?
- enable_if为什么不在这里工作?
- C 参考class对象的返回 - 为什么不工作
- 为什么不会(真;真;std::cin>>str) 工作?
- 为什么我的bmp写入程序不工作
- 为什么我的超载<<运算符不工作?
- 为什么不't此P/Invoke签名工作
- 用不重复的随机数填充向量.为什么不工作
- 为什么套接字在多线程时不工作
- 为什么我的字符串替换不工作在c++
- 为什么它不工作
- OpenGL-为什么在OnDraw函数中通过传递参数绘制线条不工作
- 为什么我的C/ c++头解析器不工作
- 无法弄清楚为什么我的开关不工作。似乎无法识别 cin 输入
- 为什么我的头实现不工作
- 为什么cvWaitKey(0)不工作
- Execl与wget,子进程,为什么它不工作
- Visual Studio MFC in C++:为什么"int"工作而不"double"?