前言:
前文我们谈到过构造函数《C++的构造函数》,现在我们主要讨论构造函数在派生类里的运用。
1.必备知识/概念
- 继承与派生
- 派生类构造函数的定义与声明
- 派生类构造函数的功能
2.继承与派生
继承
与派生
其实是指两种关系!
这两种关系就像家庭族谱里边的长辈与晚辈的某种联系,我们可以这样理解:你和你的父亲肯定在性格或者为人处世等方面有诸多相似之处,我们说那是你遗传了你父亲的某些特质。也就是说你继承
了你父亲的这些特点,而反过来,我们说是你父亲把这些特质派生
给了你。
我们现在把这个关系重新命名,父亲=基类
;儿子=派生类
。它们之间的箭头是由派生
指向基类
。
总结成一句话:
父亲派生
给儿子,儿子继承
父亲。
3.派生类构造函数的定义与声明
我们首先定义一个基类Student
,在定义一个派生类Student1
,通过派生类去访问基类Student
的成员数据,主函数调用派生类的成员函数show
进行输出。
以上是我们要写的一个业务逻辑,我们在主函数建立对象的时候直接给出参数,进行输出。
1.首先定义基类Student
,也就是我们说的父亲。
class Student { public: Student(int n, string nam, char s) :num(n), name(nam), sex(s) {};//定义基类构造函数 ~Student()//定义基类的析构函数 { } protected: int num; string name; char sex; };
基类的构造函数进行数据初始化,我们用的是初始化表,这是我个人比较喜欢用的,因为比较方便。
Student(int n, string nam, char s) :num(n), name(nam), sex(s) {};
2.定义一个派生类Student1
,去访问基类的数据成员
class Student1:public Student { public: Student1(int n, string nam, char s, int a, string ad) :Student(n, nam, s), age(a), addr(ad) {}//定义派生类构造函数 void show() { cout << "num:" << num << endl; cout << "name:"<<name << endl; cout << "sex:" << sex << endl; cout << "age:" << age << endl; cout << "addr:" << addr << endl; } ~Student1() {}//派生类析构函数 private: int age; string addr; };
在派生类里我们需要知道下面几点:
- 继承方式的定义,这里我们定义的公用继承。
- 派生类的公用成员函数
show
能够访问基类的保护protected
数据成员 - 派生类的作用就是为基类补充数据成员
age
和addr
。
4.主函数的写法
int main() { Student1 stud1{ 100010,"wang",'f',19,"115 Beijing Road,Shanghai" }; Student1 stud2{ 100011,"Zhang",'m',21,"213 Shanghai Road,Beijing" }; stud1.show(); stud2.show(); return 0; }
建立对象stud1
和stud2
,带着参数进行调用函数show
。
5.派生类构造函数的功能
数据初始化!