\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;
}
#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;
}
相关文章推荐
- C++中复制构造函数有关的一点问题
- c++有关构造函数和析构函数中调用虚函数问题
- [C++]有关深复制与copy constructor的一些问题与实例
- c++ 初学 构造函数和复制控制
- C++基础 构造函数相关的问题。。。
- C++复习(4):有关const的一系列问题
- C++随机数生成中种子值设置的一点总结,解决随机数序列重复问题
- C++析构函数,复制构造函数,默认构造函数是执行机制
- 有关C++ POD的一些问题记录
- c++中不同场景构造函数的次序问题:
- C++中复制构造函数和隐式转换
- C++中复制构造函数与重载赋值操作符总结
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 摘:C++中构造函数和析构函数避免调用虚函数的问题
- 有关recv端数据流分割问题的一点思考
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 深入理解c++构造函数, 复制构造函数和赋值函数重载(operator=)
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容 【转】 参考度4.6星