首页 > 编程语言 > 详细

c++构造函数中调用构造函数---匿名对象再探

时间:2017-02-19 11:04:51      阅读:212      评论:0      收藏:0      [点我收藏+]

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 class Copy_construction {
 5 public:
 6     Copy_construction(int a,int b,int c)
 7     {
 8         this->a = a;
 9         this->b = b;
10         this->c = c;
11         cout << "这是Copy_constructiond的有3个默认参数的构造函数!  "<<this->a<<" "<<this->b<<" "<<this->c<<endl;
12     }
13 
14     Copy_construction(int a, int b)
15     {
16         this-> a= a;
17         this->b = b;
18         Copy_construction(3, 4, 5);
19         cout << "这是Copy_constructiond的有2个默认参数的构造函数!  " << this->a << " " << this->b << endl;
20     }
21     ~Copy_construction()
22     {
23         cout << "Copy_construction对象被析构了! "<<this->a << " " << this->b << " " << this->c << endl;
24     }
25 
26     int getC()
27     {
28         return c;
29     }
30 private:
31     int a;
32     int b;
33     int c;
34 
35 };
36 
37 
38 int run()
39 {
40     Copy_construction aa(1, 2);
41     cout << aa.getC() << endl; //c的值为垃圾值,因为匿名对象被创建有立即析构了
//就算用不析构的方式,也是垃圾值,因为c是不同对象中的元素
                    //在2个参数的构造函数中,没有显式初始化c,不能通过构造其他对象而在本构造对象中访问未初始化的数据 42 return 0; 43 } 44 int main() 45 { 46 47 run(); 48 cout << "hello world!\n"; 49 return 0; 50 }

如果直接显示调用构造函数,要看怎么去接这个函数, Copy_construction(1,2,3);调用之后马上执行析构匿名对象
 Copy_construction  T= Copy_construction1
,
2,3)此时匿名对象不析构而直接转正成T。
NOTE:
构造函数中调用构造函数是危险的做法。
 

c++构造函数中调用构造函数---匿名对象再探

原文:http://www.cnblogs.com/yangguang-it/p/6414834.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!