各位大虾,帮我看看下面这道C++的题,谢啦 (我想知道它哪里出错了,看它输出来的结果感觉不对劲啊)

[复制链接]
查看11 | 回复1 | 2010-11-30 00:57:06 | 显示全部楼层 |阅读模式
#include
using namespace std;
class CX
{
private:
static int count;
public:
CX()
{
cout
class abc{
public:
abc(){cout<<"构造函数执行\n";}
~abc(){cout<<"析构函数执行\n";}
abc(const abc& obj)
{
cout<<"拷贝构造函数执行\n";
}
};
abc fun(abc obj){return obj;}
void main()
{
abc obj1,obj2;//注释2、在函数结束时再析构
cout<<"1"<<endl;
obj2=fun(obj1);//注释1:会调用两个析构函数
cout<<"2"<<endl;
obj1=fun(obj2);
cout<<"3"<<endl;
abc obj3;
}

回复

使用道具 举报

千问 | 2010-11-30 00:57:06 | 显示全部楼层
如果看到的是这个Constructor calledConstructor calledThere are 2object(s)Destructor calledDestructor calledDestructor called那就没错 b是拷贝构造函数构造的 没给count + 1 -----知道你想说什么了x_xabc & fun(abc obj){return obj;} <- 写成这样就只有一次了。你调用fun的时候返回的那个abc也是一个对象,先析构的是原来的obj2,然后给obj2赋值,最后还得把那个中间的对象也析构了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行