我有以下代码:
#include <cstdio>
#include <iostream>
using namespace std;
class A
{
int a, b;
public:
A() : A(5, 7) {}
A(int i, int j)
{
a = i;
b = j;
}
A operator+(int x)
{
A temp;
temp.a = a + x;
temp.b = b + x;
return temp;
}
~A() { cout << a << " " << b << endl; }
};
int main()
{
A a1(10, 20), a2;
a2 = a1 + 50;
}
输出显示:
60 70
60 70
10 20
该代码几乎按预期工作。问题是它将对象的值打印a2
两次...这意味着析构函数被调用两次...但是为什么它被调用两次?
在分配期间,将分配a2=a1+50
一个包含临时对象a1+50
。
复制到后,该对象将立即销毁a2
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句