如何理解:静态数据成员的类型可以就是它所属的类类型

#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 的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值