|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include "iostream"
- using std::endl;
- using std::cout;
- using std::cin;
- class Test
- {
- private:
- int a;
- int b;
- public:
- Test(int a = 0, int b = 0)
- {
- this->a = a;
- this->b = b;
- }
- public:
- Test(const Test& obj)
- {
- this->a = obj.a + 10;
- this->b = obj.b + 10;
- }
- public:
- void printTest()
- {
- cout << this->a << " " << this->b << endl;
- }
- };
- Test fun2()
- {
- Test t4(111, 222);
- return t4;//返回匿名对象,调用copy构造 调用一次
- }
- void main()
- {
- Test t5 = fun2();//匿名对象强转为t5,调用copy构造,调用两次
- t5.printTest();
- system("pause");
- }
复制代码
this->a = obj.a + 10;
this->b = obj.b + 10;
第一次返回匿名对象,匿名对象copy构造 a b值应该为 121 232
第二次Test t5 = fun2()调用copy构造,a b值应该为131 242
可是t5.printTest();打印结果为 121 232 这是为啥啊? |
|