//分析以下程序的执行结果
#include<iostream.h> #include<conio.h> class Sample { int x; public: Sample(int a) { x=a; cout<<"constructing object:x="<<x<<endl; } }; void func(int n) { static Sample obj(n); } int main() { func(1); func(10); getchar(); return 0; } //--------------------------------------------------------------------------
分析:本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:
counstructing object:x=1
注意:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。