继承和static关键字在一起会产生什么现象哪?
理论知识
- 基类定义的静态成员,将被所有派生类共享
- 根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质(遵守派生类的访问控制)
派生类中访问静态成员,用以下形式显式说明:
类名 :: 成员 或通过对象访问 对象名 . 成员
总结:
- static函数也遵守3个访问原则
- static易犯错误(不但要初始化,更重要的显示的告诉编译器分配内存)
#include <iostream>
using namespace std;
class A
{
public:
int a;
static int sa;
};
int A::sa = 10;
class B :public A
{
public:
int b;
};
class C:public A
{
public:
int c;
};
// 类的静态变量是所有派生类所共享的
int main()
{
cout << "sizeof B : " << sizeof B << endl;
B b;
b.sa = 123;
cout << "C::sa = " << C::sa << endl;
return 0;
}
执行结果:
sizeof B : 8
C :: sa = 123