繼承
單繼承
class SubClass:[繼承方式]ParentClass
{
//variables
};
子類成員對基類成員的訪問方式:繼承方式
class A {
public:
x;
protected:
y;
private:
z;
};
class B:[public/protected/private]A{
};
繼承方式 | 基類成員 | 子類成員訪問 | 子類中的成員函數 | 子類的對象 |
public | public protected private |
public protected 不可訪問 |
可以訪問基類的public和protected成員 | 可以訪問基類的public和protected成員 |
protected | public protected private |
protected protected 不可訪問 |
可以訪問基類的public和protected成員 | 不能訪問基類中的所有成員 |
private | public protected private |
private private 不可訪問 |
可以訪問基類的public和protected成員 | 不能訪問基類中的所有成員 |
public繼承方式
protected繼承
private繼承
子類的構造函數
class A
{
public:
A(int m) {num=m;};
private:
int num;
};
class SubClass: public A {
public:
SubClass(int a, string s):A(a) {
s = s;
}
private:
string s;
};
當初始化SubClass的構造函數時,先初始化其父類A的構造函數,然後才初始化基類的構造函數。多繼承
class A {
public:
A(B b){
}
};
Class B {
};
Class C: public A{
public:
C(B b):A(b), b(b) {
}
private:
B b;
};
在多繼承時,父類和成員的初始化按照下列規則:虛基類 virtual
class Subclass:<strong>virtual</strong> public A