C++复制构造函数,析构函数有关问题
C++复制构造函数,析构函数问题。
#include<iostream>
using namespace std;
class CMyclass
{public:
CMyclass(){};
CMyclass(CMyclass&c)
{
cout<<"copy constructor"<<endl;
}
~CMyclass(){ cout<<"destructor"<<endl;}
};
void fun(CMyclass obj_)
{
cout<<"fun"<<endl;
}
CMyclass c;
CMyclass Test()
{
cout<<"test"<<endl;
return c;
}
void main()
{
CMyclass c1;
fun(c1);
Test();
}
执行结果为 :
copy constructor
fun
destructor //参数消亡
test
copy constructor
destructor //返回值临时对象消亡
destructor //局部变量消亡
destructor //全局变量消亡。
疑惑: 具体一点,是哪个参数,哪个局部变量,哪个全部变量消亡。 为什么析构函数执行那么多次? 我对复制构造函数还有析构函数不太熟。
求大神帮忙,解答一下!!!谢谢。
------解决方案--------------------
destructor //参数消亡---->void fun(CMyclass obj_) 中的obj
test
copy constructor
destructor //返回值临时对象消亡--->return c; 中的c的copy,会调用copy constructor生成临时对象
destructor //局部变量消亡--->c1
destructor //全局变量消亡。--->全局c
#include<iostream>
using namespace std;
class CMyclass
{public:
CMyclass(){};
CMyclass(CMyclass&c)
{
cout<<"copy constructor"<<endl;
}
~CMyclass(){ cout<<"destructor"<<endl;}
};
void fun(CMyclass obj_)
{
cout<<"fun"<<endl;
}
CMyclass c;
CMyclass Test()
{
cout<<"test"<<endl;
return c;
}
void main()
{
CMyclass c1;
fun(c1);
Test();
}
执行结果为 :
copy constructor
fun
destructor //参数消亡
test
copy constructor
destructor //返回值临时对象消亡
destructor //局部变量消亡
destructor //全局变量消亡。
疑惑: 具体一点,是哪个参数,哪个局部变量,哪个全部变量消亡。 为什么析构函数执行那么多次? 我对复制构造函数还有析构函数不太熟。
求大神帮忙,解答一下!!!谢谢。
------解决方案--------------------
destructor //参数消亡---->void fun(CMyclass obj_) 中的obj
test
copy constructor
destructor //返回值临时对象消亡--->return c; 中的c的copy,会调用copy constructor生成临时对象
destructor //局部变量消亡--->c1
destructor //全局变量消亡。--->全局c