c++函数返回类对象时, 返回对象生命周期的研究

参考自: https://blog.csdn.net/RUN32875094/article/details/78462718

c++函数返回类对象时, 返回对象生命周期的研究

一般的函数返回的对象是个临时对象, 在返回赋值语句完成后就会析构;  部分情况不会产生临时对象 

 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大佬

    c++函数返回类对象时, 返回对象生命周期的研究

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/343961

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午2:23
下一篇 2023年3月2日 上午2:24

相关推荐