继承
单继承
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