读书人

c++ 静态成员初始有关问题

发布时间: 2012-06-20 20:37:21 作者: rapoo

c++ 静态成员初始问题

C/C++ code
#include <iostream>using namespace std;class t{public:    t(){cout<<"t"<<endl;}    void send(){cout<<"send"<<endl;}};class A{public:    A(){tt.send();}    static t tt;};A a;t A::tt;void main(){    }



为什么会出到
send
t
的输出结果 不解

[解决办法]
全局变量内存分配和初始化时机问题,内存分配在链接时已经完成,初始化需要代码执行到变量定义处执行。
所以在A a;处tt的内存已经分配,所以可以执行tt.send();但是其构造函数要到t A::tt;处执行。

读书人网 >C++

热点推荐