这是我相信的:得到返回的返回类型是对象的引用吗?
当一个函数返回它时,创建一个新的临时对象副本,并且这个临时对象保留在内存中,从它被调用的地方开始。
当函数返回该对象本身返回的引用时。这意味着该对象不应该是本地的。
所以,当我这样做:
MyStruct & ReferenceReturn(MyStruct cl)
{
return cl;
}
在main()我做
MyStruct d("notmyname"),g("myname");
d = ReferenceReturn(g);
cout << d.name;
cout << ReferenceReturn(g).name;
打印不需要的两个。
返回什么? :引用g的本地拷贝,即一旦函数完成就被销毁,或者在语句结束后对临时对象的引用被销毁。但是,既然温度已经被创造出来,它就会以正确的方式超越。所以我相信它是返回的传递值的localcopy的参考。
但是,只要我在结构中进行析构函数,它就完美了,具有以下代码和特定的输出。
~MyStruct()
{
cout << name << " is destroying";
}
输出:
myname is destroying
myname
myname
myname is destroying
....
此输出显示只有一个对象是为每一个呼叫建立。 (有两个电话)
但是,为什么它不工作没有析构函数?
感谢
结果未定义为这种情况? –