前言:
前文我们谈到过构造函数《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.派生类构造函数的功能
数据初始化!










