一、派生類繼承基類成員的規則
- ①派生類繼承了基類的所有資料成員與函數(不論公有成員、保護成員、私有成員)
- ②派生類雖然繼承了基類的所有成員,但是能不能通路基類的成員還與父類成員的屬性(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的,是以不能在外部直接使用