适合具备 C 语言基础的 C 教程(六)
扫描二维码
随时随地手机看文章
前言
在上一则教程中,着重讲述了派生类继承于父类之后的一些访问控制,在本次教程中,将介绍如下几个点:派生类扩展父类功能,派生类的空间分布,以及多重继承的相关概念。
派生类扩展父类的功能
在前文所述的 Father类我们通常也称之为父类或者说称之为基类,而 Son类我们则称之为子类或者是派生类,我们知道通过public继承的方式Son类可以继承到父类的 it_skill,那么我们可不可以将这个继承得到的 it_skill发扬光大呢?实际上是可以的,用更加专业的话来讲就是覆写,也就是 override,代码如下所示:
class Son : public Father注意上述的
{
private:
int toy;
public:
void paly_game(void)
{
cout << "son play game" << endl;
}
void it_skill(void)
{
cout << "son's it skill" << endl;
}
};it_skill和Father类的 it_skill是相同的一个函数,只是在 Son类里对这个函数进行了覆写,这个时候,如果向如下方式调用 it_skill,那么就会调用的是 Son类里面定义的 it_skill。
int main(int argc, char **argv)
{
Son s;
s.it_skill();
return 0;
}
派生类的空间分布(内存分布)
在讲述派生类的空间分布的时候,我们采用 Person类和 Student类进行阐述,首先 Person类具有如下的属性:
class Person然后,
{
private:
char *name;
int age;
public:
int address;
void setName(char *name)
{/*省略*/}
void setAge(int age)
{/*省略*/}
Person(char *name, int age)
{/*省略*/}
~Person()
{/*省略*/}
};Student类以 public的方式从 Person类中继承而来,代码如下所示:
class Student : public Person上述就是
{
private:
int grade;
public:
void setGrade(int grade)
{
this->grade = grade;
}
int getGrade(void)
{
return this->grade;
}
/*override*/
void printInfo(void)
{
cout << "Student";
person::printfInfo();
}
};Student类以 public方式继承自 Person类的一个例子,因为 Student类中也存在其自身的私有数据成员,所以,总的来说,Person类和Student类之间的关系如下所示:
image-20210210215953484通过上述的示意图可以清楚地知晓Student类和 Person类之间的关系,那么假设现在有如下所示的一句代码:
Student s;
Person





