4-4继承(带参构造)_哔哩哔哩_bilibili
继承机制
4.1继承与派生的概念
继承 是指在已有类或称为基类的基础上创建新类,这个新类就是派生类。
单继承:由一个基类派生的类
多继承:由两个或多个基类派生的类
派生类的声明
默认是private的
//继承机制 #include<iostream> #include<string> using namespace std; class person { string name; int age; public: void setPerson(string n,int a) { name = n; age = a; } void showPerson() { cout<<"name:"<<name<<endl; cout<<"age:"<<age<<endl; } }; class student:public person //student是继承自person的 { int grade; public: void setStudent(string n,int a,int g) { setPerson(n,a); grade = g; } void showStudent() { showPerson(); cout<<"grade:"<<grade<<endl; } }; int main() { student s; s.setStudent("amrk",13,5); s.showStudent(); return 0; }
4.2派生类的访问控制
private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.
protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数
protect不能通过对象直接访问
可以看出name,age在基类中被定义在不同
访问时的权限也有区别。
4.3继承之下的构造函数与析构函数
var code = "5c4a1f6c-076c-483e-a517-f54bc492a040"
4.4多继承
继承案列:
StudentHasjob继承Student和Empolyee,此时Student和Employee是基类,StudentHasjob是派生类。
使用的方法:
job基类定义为protected,继承方式是public,派生类中的是protected。可以被派生类去访问
使用。
4.6虚基类和赋值兼容性
4.6.1基类的访问:成员名限定
两个基类中的name都可以进行访问,出现了冲突,指定要访问的成员。
4.6.2虚基类
派生类出现了套娃
解决方法:虚基类
在定义Student和employee类的时候在前面加上virtual
在创建虚基类的派生时,必须在初始化成员列表中,对虚基类构造函数调用。
此时,Student和employee类就成为了传说中的虚基类。
虚基类的继承就是StudentHasjob,不要忘了调用一下基类person(name,age),和虚基类Student和employee
4.6.4赋值兼容规则
基类shape
继承类circle
使用规则