在所有函数之外定义的变量有三种,1。全部变量,2。名字空间的变量,3.类的静态变量。 这三类变量或者称为非局部变量他们只在“程序开始时”建立一次,终止是销毁一次。【c++程序设计语言 ,Bjarne Stroustrup p218】。看下面这个例子。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
#include <iostream>
using namespace std;
class test1
{
public:
test1()
{
cout<<"test1";
}
~test1()
{
cout<<"de test1 ";
}
};
class test2
{
public:
test2()
{
cout<<"test2";
}
~test2()
{
cout<<"de test2";
}
};
class test3
{
public:
test3()
{
cout<<"test3";
}
~test3()
{
cout<<"de test3";
}
};
class ttt
{
static test1 mm;
};
test2 t1; //全局变量
test1 ttt::mm; //类中静态变量的定义
namespace zzz
{
test3 t1; //名字空间的变量
}
int main()
{
}
这段代码的输出是 test2 test1 test 3 de test3 de test2 de test1 可以初始化顺序是按照定义顺序来的,需要注意的是在类ttt中的申明并不影响初始化顺序。