#include<iostream>
using namespace std;
class A
{
public:
A(char a)
{
s=a;
cout<<“对象”<<s<<“被构造了”<<endl;
}
~A()
{
cout<<“对象”<<s<<“被析够了”<<endl;
}
char s;
};
A f()
{
A a(“a”);
return a;
}
int main()
{
f();
return 0;
}
运行结果如下:
![C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了 C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了](https://www.codebye.com/wp-content/uploads/2016/08/-368051799-554795201.jpg)
using namespace std;
class A
{
public:
A(char a)
{
s=a;
cout<<“对象”<<s<<“被构造了”<<endl;
}
~A()
{
cout<<“对象”<<s<<“被析够了”<<endl;
}
char s;
};
A f()
{
A a(“a”);
return a;
}
int main()
{
f();
return 0;
}
运行结果如下:
![C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了 C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了](https://www.codebye.com/wp-content/uploads/2016/08/-368051799-554795201.jpg)
解决方案
10
加复制构造函数再试试。
10
第二次是调用默认的复制构造,你没有重定义复制构造,所以没有打印。
40