您的位置:首页 > 编程语言 > C语言/C++

\t\tC++中复制构造函数有关的一点问题

2012-12-05 17:16 344 查看
当一个函数的返回值是类对象时,如果要把这个函数的返回值复制一个新对象,那么从程序运行结果看,复制构造函数要调用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐