当前位置:首页 » 《关注互联网》 » 正文

C++ ─── 匿名对象+变量的创建顺序

8 人参与  2024年05月02日 11:45  分类 : 《关注互联网》  评论

点击全文阅读


目录

1. 匿名对象(临时对象)

2. 编译器的优化

3.变量的创建与销毁


1. 匿名对象(临时对象)

        我们先来看有名对象的创建

Date d1;Date d2(2024,4,27);

        匿名对象的创建

Date(2024,56,1);

        生成了一个匿名对象,执行完Date(2024,5,1),此匿名对象就消失了。

注意:

        匿名对象的生命周期为当前行。

        匿名对象具有常性。

★★★产生匿名对象(临时对象)的情况:

        1. 传值传参(先将值转为匿名对象)
        2. 类型转换

         3.传值返回

2. 编译器的优化

        1. 在连续的表达式中, 构造+拷贝构造------》优化成一个构造

eg: 传值传参

        2. 连续的表达式中,拷贝构造+拷贝构造-----》优化成一个拷贝构造

eg: 接受传值返回

        3. 连续的表达式中,赋值重载+拷贝构造可能不会优化

        4. 有些编译器也可能跨行优化,过度优化。

3.变量的创建与销毁

        ★ 在同一个栈帧中,后定义的先析构,后进先出(编译器自动)

        ★ 局部的静态变量如(下面的D),生命周期是全局,且只会在第一次调用时进行构造,第二次不进行构造

//设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为?C c;void main(){  A*pa=new A();  B b;  static D d;  delete pa;}

        答案:A B D C

        分析: 首先手动释放pa, 所以会先调用A的析构函数,其次会跟定义相反的顺序释放局部对象,这里只有b,就释放b,再释放静态局部对象d,再释放全局对象c( D和C相当于在一个栈帧定义的,且是C先定义,D后定义)

 如果去除delete pa;

答案是 B A D C

        


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/102829.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 谢尽长安花+后续+结局沈照霜宁砚完本_谢尽长安花+后续+结局(沈照霜宁砚)
  • 不见青山存完结(霍青秦兮霍宴)_不见青山存完结霍青秦兮霍宴
  • 他的干妹妹怀孕后,我闪婚了文集(林诺陆深)全书免费_(林诺陆深)他的干妹妹怀孕后,我闪婚了文集后续(林诺陆深)
  • 江先生,你要听话列表列表_江先生,你要听话列表(许清欢江砚舟)
  • 一抹斜阳相思泪后续+必读夏知微陆远川完本_一抹斜阳相思泪后续+必读(夏知微陆远川)
  • 「不当假少爷后,我娶了首富当老婆」免费试读_萧寒沈凌薇章节多结局预体验‌
  • 全书浏览我死后,数万网友对我进行审判火爆(董天华尹瑶)_我死后,数万网友对我进行审判火爆(董天华尹瑶)全书结局
  • 纨绔恶少抽盲盒选妻子,我换嫁绝嗣总裁后他发疯求原谅+免费+后续列表_纨绔恶少抽盲盒选妻子,我换嫁绝嗣总裁后他发疯求原谅+免费+后续(阮玉绵)
  • 完结文晚云为落日溺亡++后续列表_完结文晚云为落日溺亡++后续(裴念舒)
  • [修仙:我在云疆养仙蚕]章节多结局预体验‌_「林珂」小说无删减版在线阅读
  • 全书浏览我死后,数万网友对我进行审判++番外(董天华尹瑶)_我死后,数万网友对我进行审判++番外(董天华尹瑶)全书结局
  • 被兄弟俩接连当工具人后,我杀疯了后续+(贺云舟)全书免费_(贺云舟)被兄弟俩接连当工具人后,我杀疯了后续+后续(贺云舟)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1