继承中的static关键字
继承和static关键字在一起会产生什么现象哪?
理论知识
基类定义的静态成员,将被所有派生类共享
根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质 (遵守派生类的访问控制)
派生类中访问静态成员,用以下形式显式说明:
类名 :: 成员
或通过对象访问 对象名 . 成员
实例
#include <cstdlib>
#include <iostream>
using namespace std;
class A
{
public:
static int a;
int b;
A() //默认情况下的构造函数是private的
{
cout << "A类中的构造函数" << endl;
}
void get()
{
cout << " b " << b << endl;
}
void print()
{
cout << " lijiatu " << endl;
}
};
int A::a = 100; //注意:静态成员变量必须显式的初始化
class B : private A
{
public:
int b;
int c;
void get_child()
{
cout << " b " << b << endl;
cout << a << endl;
}
void print()
{
cout << " yangyun " << endl;
}
};
//static关键字遵守派生类的访问控制规则
void main()
{
B b1;
//b1.a = 200; err 类的外部不能访问
system("pause");
}
总结:
1> static函数也遵守3个访问原则
2> static易犯错误(不但要初始化,更重要的显示的告诉编译器分配内存)
3> 构造函数默认为private