一、继承的概念及定义
(一)概念
继承是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法 (成员函数) 和属性 (成员变量),这样产生新的类,称派生类。
(二)继承格式
1、继承方式
我们前面对类的成员有三种限制方式,这里也就对应了三种继承方式。
2、格式写法
3、派生类继承后访问方式的变化
1、通过表格可以发现,如果是
private成员,那么无论哪种继承方式都不可以访问到这个权限。 2、此外,struct和class这两个关键字在继承时也有差距,struct默认继承方式为公有,而class默认继承方式为私有。
我们如果将权限的大小定义为
public > protected > private,那么其余访问方式变化就是将大于该继承方式的权限降到继承方式的权限即可。
(三)普通类继承
这里用到的是继承最基本的语法,采用 public 继承,那么除了父类的 private 变量不可访问以外,成员的权限保持不变。
class Person {
public:
void Print() {
cout << _name << endl;
cout << _age << endl;
}
protected:
string _name = "张三"; // 姓名
private:
int _age = 18; // 年龄
};
class Student : public Person {
public:
void func() {
Print();
}
protected:
int _stunum; // 学号
};
(四)类模板继承
在之前我们实现 stack 时,采用的是新建了一个容器类型,在这里我们亦可以采用继承的方式来实现。
需要注意的是,派生类在继承时,如果需要访问父类的成员函数,需要指定类域,模板的成员函数采用的是按需实例化。
namespace wgm {
< >
: std::vector<T> {
:
{
vector<T>::(x);
}
{
vector<T>::();
}
{
vector<T>::();
}
{
vector<T>::();
}
};
}


