天天看点

C++:40---继承中类成员的变化关系

一、派生类继承基类成员的规则

  • ①派生类继承了基类的所有数据成员与函数(不论公有成员、保护成员、私有成员)
  • ②派生类虽然继承了基类的所有成员,但是能不能访问基类的成员还与父类成员的属性(public、protected、private)以及继承方式有关
  • ③类静态成员:如果基类定义了一个静态成员,那么该静态成员在整个继承体系中都存在。
  • 该静态成员只能定义一次,派生类不能再次定义
  • 一个类改变了静态成员的值,整个继承体系中的值都将改变
#include <iostream>
using namespace::std;
class A {
public:
static int a;
};
int A::a = 2;
class B:public A{
public:
//static int a; 错误,不能再次定义
};
int main()
{
A a;
B b;
b.a=1;
cout << b.a <<endl; //1
cout << a.a <<endl; //1
return 0;
}      

二、演示案例

class A
{
public:
int a_data;
A(int data):a_data(data){}
void showA(){


}
protected:
int pro_data;
private:
int pri_data;
};
class B :public A
{
public:
int b_data;
B(int data) :A(data), b_data(data) {}
void showB(){}
};      
  • 可以看到B公有继承于A,B可以在类内访问父类A的所有public、protected成员,但不能访问private成员
  • 由于父类的protected成员在子类中也是protected的,所以不能在外部直接使用