关于static对象

cpp 代码
 
  1. #include<iostream></iostream>  
  2. using namespace std;  
  3. class A{  
  4.       int i;  
  5.       public:  
  6.              A(int i)  
  7.              {  
  8.              cout<<"construct A: "<<
             this->i=i;                    }                ~A()                {                cout<<"destruct A: "<<              }                         };         A a(1);         void f1()         {              static A b(2);          }           void f2()         {              static A b(3);          }          int main()          {               f1();               return 0;           } 
由于自己对static对象保存在 静态数据区(data or bss)中,所以在昨天的笔试中想当然的认为都会初始化,但其实不是这样。 在静态数据区只是分配了空间而已,而对于一个类的构造是有空间与构造两个步骤的。 在一个函数中定义一个变量,是空间与构造同时进行。 而在静态数据区,如果你不去碰它。永远只是分配空间而已。 去IBM笔+面的收获:自己的底层知识远远不够。顶层概念也不清晰。平时有点自以为是了。老把自己当高手,纯粹扯淡。 如果一个题目abcd4个选项,别人能排除1个选项,而我水平高点能排除两个选项,根据倒霉蛋原理,最后还是都会选一个错的答案,有什么用,相反一些错误的思考会让自己做错一个什么都不懂的人凭直觉就能做对的题。所以真正的高手都是能排除3个选项的人。而我,还差得远呢。 static对象都是放在bss中的,不管代码中是否初始化。但估计对于有初始化语句的对象有额外的标志。以引导构造函数发生。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值