参考自: https://blog.csdn.net/RUN32875094/article/details/78462718
一般的函数返回的对象是个临时对象, 在返回赋值语句完成后就会析构; 部分情况不会产生临时对象
1 #include <iostream> 2 class aaa 3 { 4 public: 5 aaa(int a1) 6 :a(a1) 7 { 8 printf("gouzao %d %xn", a,this); 9 } 10 aaa() 11 :a(0) 12 { 13 printf("gouzao1 %d %xn", a, this); 14 } 15 aaa(const aaa &a1) 16 :a(a1.a) 17 { 18 printf("gouzao2 %d %xn", a, this); 19 } 20 ~aaa() 21 { 22 printf("xigou %d %xn", a, this); 23 } 24 public: 25 void print() 26 { 27 printf("aaaaan"); 28 } 29 operator char*() 30 { 31 printf("adsfdn"); 32 return NULL; 33 } 34 35 int a = 0; 36 }; 37 38 aaa GetObject() 39 { 40 aaa aa(10); 41 aa.a = 9; 42 return aa; 43 } 44 int wmain(int argc, wchar_t **argv) 45 { 46 printf("main startn"); 47 GetObject().print();// 返回临时对象,该语句结束后, 返回临时对象就会析构 48 char *aa = GetObject();// 返回临时对象,这句话之后, 返回临时对象就会析构, 之后aa就会成为也指针 49 aaa a1 = GetObject();// 不返回临时对象, GetObject()内部的aa对象作为参数传给a1的拷贝构造函数 50 printf("main endn"); 51 system("pause"); 52 return 0; 53 }
原文链接: https://www.cnblogs.com/talenth/p/12758811.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/343961
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!