味精-张 2016-04-01 00:45 采纳率: 0%
浏览 1472
已采纳

c++关于静态数据成员的问题,看以下程序,会输出什么数字,过程是什么

图片图片

  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-04-01 01:53
    关注

    打印出221

     Obj obj1; //会调用构造,所以i++了(变为1了)
        f();        //调用函数f(),在函数内定义了一个对象,也会调用构造,i++了(变为2了),打印出第一个数字2,
                   //打印完以后,f()函数结束了,obj2离开了作用域,调用析构i--了(变为1了)
        Obj *obj3 = new Obj;//会调用构造,所以i++了(变为2了)
        cout << obj3->getVal();//打印出2
        delete obj3;//调用析构,i--(变为1了)
        cout << Obj::getVal();//打印出1
    

    注:
    静态数据成员是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料