继承是面向对象三大特性之一
继承的好处:减少重复代码
语法: class 子类 : 继承方式 父类
子类 也称 派生类
父类 也称 基类
比如:class A :public B
A类称为 子类(派生类)
B类称为 父类(基类)
public 叫做 继承方式
派生类中的成员,包含两大部分
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过来的表现其共性,而新增的成员表象其个性。
例子:
//公共页面类
class BasePage
{
public:
void header()
{
cout << "首页、公开课、登录、注册......(公共头部)" << endl;
}
void footer()
{
cout << "帮助中心、交流合作、站内地图......(公共底部)" << endl;
}
void left()
{
cout << "Java、Python、C++......(公共分类列表)" << endl;
}
};
//Java页面
class Java :public BasePage
{
public:
void content()
{
cout << "Java学科视频" << endl;
}
};
//Python页面
class Python :public BasePage
{
public:
void content()
{
cout << "Python学科视频" << endl;
}
};
继承的三种方式:
1.公共继承 2.保护继承 3.私有继承
继承中的构造和析构顺序
先调用父类构造函数,然后调用子类构造函数, 析构顺序与构造顺序相反
继承同名成员处理方式
访问子类同名成员 直接访问即可。
访问父类同名成员 需要加作用域。
总结:
1.子类对象可以直接访问到子类中同名成员。
2.子类对象加作用域可以访问到父类同名成员。
3.当子类与父类拥有的成员函数,子类会隐藏父类中同名成员函数,加作用域可以访问到父类同名成员函数。
继承同名静态成员处理方式
静态成员和非静态成员出现同名,处理方式一致,只不过有两种访问方式。
静态成员有两种访问方式:
1.通过对象进行访问
2.通过类名进行访问
多继承语法
语法:class 子类 :继承方式 父类1 , 继承方式 父类2......
多继承可能会引发父类中有同名成员出现,需要加作用域区分。
c++实际研发中不建议多继承。
菱形继承
概念:两个派生类(子类)继承同一个基类(父类),又有某个类同时继承两个派生类(子类),这种继承被称为菱形继承(砖石继承)。
总结:
1.菱形继承带来的主要问题是子类继承两份相同的数据,导致资源浪费以及毫无意义。
2.利用虚继承可以解决菱形继承
例子:
//动物类
class Animal
{
public:
int m_age;
};
利用虚继承 解决菱形继承的问题
继承之前 加上关键字 virtual 变为虚继承
Animal类 称为虚基类
//羊类
class Sheep : virtual public Animal { };
//驼类
class Tuo : virtual public Animal { };
//羊驼
class SheepTuo : public Sheep, public Tuo { };
标签:继承,子类,成员,public,对象,父类,class From: https://blog.51cto.com/u_15839001/7266591