百科问答小站 logo
百科问答小站 font logo



为什么C++里,封装类对象消亡时候,先执行封装类的析构函数,再执行成员对象的析构函数? 第1页

  

user avatar   anthonyh 网友的相关建议: 
      

对象A包含对象B,A肯定持有B的引用,所以必须先解决引用的问题,不然B析构了会有无效引用。A的析构完成,A对B的引用全部失效。再析构B,就比较稳妥。

构造过程正好相反,构造函数执行时,子对象已经构造完成了,引用自然是有效的。


user avatar   haozhi-yang-41 网友的相关建议: 
      

这是一个“完整性”的保证。

也就是说,在正常使用的情况下,任何一个类成员函数在执行期间,this指针所指向的对象一定是一个完整的,无瑕疵的对象。这里的“完整无瑕疵”,指的就是类自身以及类所包含的各级子成员,都是良好构造而且有效的。

所以,要保证这点,在构造函数执行前,编译器会隐含的把所有成员都完成初始化。而成员的析构,则会隐含的安排在析构函数执行后。


user avatar   ling-jian-94 网友的相关建议: 
      

这是我看到的最准确的总结。

总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。




  

相关话题

  C++ 允许「我们都是人,所以我可以把你私有的眼睛借来随便玩,再还给你」,这难道是一种设计上的妥协? 
  C++ 和 Java 同样是静态语言,为什么 Java 的代码提示可以做的十分强大? 
  Unix网络编程里的阻塞是在操作系统的内核态创建一个线程来死循环吗? 
  C++原子变量数组能用memset置空吗? 
  C++中,auto关键字有哪些乱用的情况?平时使用有哪些坑? 
  如何激怒一位 C++ 爱好者? 
  汇编下call和ret指令是否有内存屏障的作用? 
  C# 和 Java 哪个更像 C++? 
  Linux C++ 服务器端这条线怎么走?一年半能做出什么? 
  c++指针有啥优越性啊,什么情况下要用指针呐,大一初学有点不懂。? 

前一个讨论
我们所认知的宇宙有没有可能本身就是一个黑洞?
下一个讨论
为什么python整数除法运算得浮点数?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利