是这样的.在继承关系中,如果A有三个成员 工x1,x2,x3 且x1为static 成员.A继承的B中就自动会有x1,x2 x3,
这时定义两个对象 A a B b
妙的地方来了
对于对象a与b都可
如果用a对象去更改x2,x3后,你再去关察b对象的x2,x3他们是不会变化的.
但你用a对象去更改 x1 后,你再去关察b对象的x1它也会变化.
从此可以发现,static变量是这个继承体系中的唯一版本所有对象对它的修改都是对本身的修改.,而非static则是复制版本.对象对他们的修改只会影响到该对象,而对别的对象无影响
参考如下代码:
#include <iostream>
using namespace std;
class A
{
public:
int x1;
int x2;
static int x3;
};
int A::x3 = 300;
class B : public A
{
public:
private:
};
int main()
{
A a;
B b;
a.x1= 100;
a.x2=100;
b.x1=200;
b.x2=200; //在这之前对象a与对象b的x3的值为300;
a.x3=1000; //在这之前对象a与对象b的x3的值为1000;
b.x3=2000; //在这之前对象a与对象b的x3的值为2000;
cout<<a.x3;
cout<<b.x3;
return 0;
}