复制构造函数和析构函数经典例子

#include
using namespace std;
class A
{
public:
	A()
	{
		cout<<"this is construction"<

运行结果:

this is Construction

this is Construction

this is destruction

this is destruction

this is destruction

结果析构比构造多一个,这是因为fun函数返回时生成了一个临时对象,这个临时对象是默认复制构造函数调用的(因为上面代码本身没有定义赋值构造函数,所以调用系统默认的)。然后调用赋值函数(也是默认的)赋值给主函数的对象a。

#include
using namespace std;
class A
{
public:
	A()
	{
		cout<<"this is construction"<
运行结果:

this is Construction

this is destruction

this is destruction

下面加上自定义的赋值构造函数和赋值函数

#include
using namespace std;
class A
{
public:
	A()
	{
		cout<<"this is construction"<
运行结果为:

this is Construction

this is Construction

this is Copy Construction

this is destruction

this is assignment

this is destruction

this is destruction

代码:

#include
using namespace std;
class A
{
public:
	A()
	{
		cout<<"this is construction"<
运行结果:

this is Construction

this is Copy Construction

this is destruction

this is destruction

返回对象直接使用为a预留的空间,所以减少了返回临时对象的生成


你可能感兴趣的:(C,C++)