C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了

C++语言 码拜 9年前 (2016-06-07) 1604次浏览
#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++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了
解决方案

10

加复制构造函数再试试。

10

第二次是调用默认的复制构造,你没有重定义复制构造,所以没有打印。

40

[拷贝构造函数的调用时机]
1、对象以值传递的方式传入函数参数
2、对象以值传递的方式从函数返回
3、对象需要通过另外一个对象进行初始化

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++函数返回临时对象不需要调用构造函数吗?但是调用析构函数了
喜欢 (0)
[1034331897@qq.com]
分享 (0)