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;处执行。