临时变量调用拷贝构造函数的次数
来源:互联网 发布:sqlserver删除主键约束 编辑:程序博客网 时间:2024/05/22 23:46
昨晚磊神的讲座讲了很多很纠结的问题。
今天就看了一下一直不懂的拷贝构造函数中,临时变量调用拷贝构造的次数问题。
下面用了昨晚的程序片段,当然我对一些地方进行了简化。。。
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int i = 0; 7 struct A 8 { 9 int i_; 11 A() { i_ = i++; cout << "Construct: " << i_ <<endl; } 12 A( const A& ) { i_ = i++; cout << "Copy: " << i_ <<endl; } 13 ~A(){ cerr << "~A: " << i_ << endl;} 14 }; 15 16 A func() 17 { 18 cout << "in func" << endl; 19 A tmp; 20 cout << "return func" << endl; 21 return tmp; 22 } 23 int main() 24 { 25 A a = func(); 26 27 cout << "-----------" << endl; 28 return 0; 29 }
运行结果:
【解释运行结果】
in func
Construct: 0 //【func里面的普通构造函数】
return func
Copy: 1//【xvalue,将一个xvalue的返回值调用一次拷贝构造函数作为临时变量,目的:给main函数里面的变量a赋值】
~A: 0//【func里面的普通构造函数对应的对象调用析构函数----已经作为返回值返回了,完成了它的使命】
Copy: 2//【调用A a的拷贝构造函数;A a = func(); 等价于 A a( func() )】
~A: 1//【析构xvalue,已经完成了使命了】
-----------
~A: 2//【析构A a】
昨晚还有关于左值引用和右值引用的知识,等我后面好好思考一下再挪到博客上来吧。
0 0
- 临时变量调用拷贝构造函数的次数
- 拷贝构造函数调用次数 和 临时变量 【转自百度知道】
- 拷贝构造函数的调用
- 拷贝构造函数的调用
- 拷贝构造函数和赋值运算符的重载的调用次数问题
- 构造函数调用次数
- 函数调用 中 的拷贝构造函数
- C++中构造函数的调用次数
- 构造函数的调用时机/次数
- 返回临时对象时的拷贝构造函数问题
- C++ 拷贝构造函数的调用
- 拷贝构造函数调用的时机
- [C++] 拷贝构造函数的调用
- 拷贝构造函数被调用的时机
- Java:拷贝构造函数的调用
- c++拷贝构造函数的调用时机
- 拷贝构造函数被调用的时机
- 调用拷贝构造函数的时机
- json解析二维对象
- Java中的String和Date、Timestamp之间的转换+long类型的陷阱
- Android ActionBar应用实战,高仿微信主界面的设计
- oracle数据泵使用
- iOS学习之—— autorelease
- 临时变量调用拷贝构造函数的次数
- jquery获取自定义属性(attr和prop)实例介绍
- Spring内部bean实例
- swift 设置动画结束之后不移除
- LINK1123:failure during conversion to COFF:file invalid or corrupt
- HTML(JS)+SOA+MongoDB简易架构实践经验
- iOS:你真的理解你在用的自定义NSLog吗?
- 电话 短信
- 设计模式笔记-Prototype模式