在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 有一些缺点: