深入探索C++对象模型 之 执行期语意学[1]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 c_plus_learner 的 blog

c++ 中的一件很困难的事,就是不太容易从程序代码看出表达式的复杂度。

如下面语句:if ( yy.operator = = ( xx.getvalue () ) ) )将被扩展为下面这样的c++伪码:

{

  x temp1 = xx.getvalue ();

  y temp2 = temp1.operator y();

  int temp3 = yy.operator = = ( temp2 );

  if ( temp3 ) …

  temp2.y::~y ();

  temp1.x::~x();

}

 

对象的构造和解构

构造函数一般在对象被构造后调用,而解构函数必须被放在每一个离开点(当时object还存活)只前调用。一般而言我们会把object 尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和摧毁操作。

 

全局对象

c++ 保证,一定会在main() 函数中第一次用到global 变量之前,把global 变量构造出来,而在main() 函数结束之前把global 变量摧毁掉。一个global object 如果有 constructor destructor 的话,我们说它需要静态的初始化操作和内存释放操作。

被静态初始化的object 有一些缺点:

本文关键:深入探索C++对象模型 之 执行期语意学
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top