C++中复制构造函数有关的一点问题

来源:互联网 发布:汽车油漆调色软件下载 编辑:程序博客网 时间:2024/05/18 09:42

当一个函数的返回值是类对象时,如果要把这个函数的返回值复制一个新对象,那么从程序运行结果看,复制构造函数要调用2次。

 

#include <iostream>

using namespace std;

 

class A

{

private: 

int a;

int b;

 

public:

A(int a = 1, int b = 2) : a(a), b(b){}

void SetA(int a)

{

this->a = a;

}

int GetA()

{

return this->a;

}

void SetB(int b)

{

this->b = b;

}

int GetB()

{

return this->b;

}

 

//复制构造函数

A(const A &C)

{

this->a = C.a + 1;

this->b = C.b + 2;

}

};

 

 

A Copy()

{

A example(1,2);

return example;//单步执行时看到这里返回之前要将example复制给一个临时对象temp    第一次

}

 

int main()

A a4(Copy()); //这里把临时对象复制给a4的时候又一次调用复制构造函数  第二次 

cout<<a4.GetA()<<"  "<<a4.GetB()<<endl;     //输出 3  6  // 1+1+1,  2+2+2

return 0;

 

原创粉丝点击