C++ :静态数据成员的问题

来源:百度知道 编辑:UC知道 时间:2024/05/19 02:03:02
//案例名称:使用静态数据成员
//程序名称:proj8_01.cpp
 
#include <iostream.h>
class static_myclass // 有静态数据成员的 class
{
public:
static int a;
};
int static_myclass::a = 5;
void main()
{
static_myclass obj1, obj2;
obj1.a = 10; //引用方法一
static_myclass::a = 20; //引用方法二

cout << obj1.a <<endl;
cout << obj2.a <<endl;
cout << static_myclass.a <<endl;
}

结果为:
20
20
20

我不知道问什么,谁能告诉我?
感觉怎么有点像 联合体----最后一个有效???

不是说什么最后一个有效,你可以这么理解:
静态数据成员不是某个对象所特有的,它是属于整个类的。就比如说一个东西摆在那里是你们家共有的,你动它一下它会改变,而其他人也可能会动它,而最后它所处的状态并不一定是你动过后的样子,因为在你之后可能还有人动过

更刚才的回答一样:
共享。
static_myclass::a = 20; //引用方法二
有效的是这个,如果你交换这两个语句:
static_myclass::a = 20; //引用方法二
obj1.a = 10; //引用方法一
那么结果将是10
10
10.
不信去试试。

这个问题很简单
静态数据成员不像非静态的数据成员,它并不是对象的组成部分,这个数据成员只有一个副本而已,它存在于该类的所有对象之外.当然也可以把静态数据成员认为是特定于一个类的全局变量.
在你这个题目中三次修改,访问的都是同一内存空间,所以其值与最后的那次修改一致;