#include<iostream>
using namespace std;
class Bar {
public:
static Bar bar;
int a;
double b;
};
Bar Bar::bar = { 12, 13.2 };
int main()
{
Bar obj = { 1, 3.15 };
cout << obj.a << endl;
cout << obj.bar.a << endl;
cout << obj.bar.bar.a << endl;
obj.bar.bar.a = 555;
cout << obj.bar.bar.a << endl;
cout << obj.bar.bar.bar.a << endl;
cout << obj.bar.a << endl;
system("pause");
return 0;
}
首先初始化对象 obj ,同时定义静态成员 bar 。 obj 和 bar 都是 Bar 类型,不同的是, obj 是局部变量,而 bar 是静态数据成员。静态数据成员(bar)不属于类(obj)的一部分。注意,因为obj 和 bar 都是 Bar 类型,所以 obj 和 bar 共享静态数据成员 bar ,如图:
也就是说,bar 的 Bar 类型的静态数据成员就是自己本身。
接下来看运行结果:obj.a 就是对象 obj 的成员 a ,obj.bar.a 或 obj.bar.bar.a 或 obj.bar.bar.bar.a 或……就是静态数据成员 obj.bar 的 成员 a 。所以修改 obj.bar.bar.a 的值,就是修改 obj.bar.a 的值。