关于静态对象构造

//分析以下程序的执行结果
#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

 

注意:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。

原文地址:https://www.cnblogs.com/zhangdongsheng/p/2004867.html