C++继承与派生——(2)派生类
2023-12-21 21:53:14
归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏? + 留言?📝
缺乏明确的目标,一生将庸庸碌碌!
一起加油!
目录
一、前言:
????????派生类是特殊的基类,基类是派生类的抽象描述。派生类自动继承了基类的成员,同时还添加了自己的新成员。因此,派生类不等同于基类。
二、派生类的定义:
派生类的定义格式如下:
{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????class 派生类名:继承方式??? 基类名
????????????????????????????????????????????派生类新定义成员;
}
其中,“基类名”是已有的类的名称,“继承方式”关键字有:public、protected 和private,分别表示公有继承、保护继承和私有继承,系统默认是私有继承(private)。
💦例:示例定义公有派生类。
#include<iostream>
#include<string>
using namespace std;
class Person{
private:
string name;
int age;
char sex;
public:
void setPerson(string pName,int pAge,char pSex){
name=pName;
age=pAge;
sex=pSex;
}
string getName(){
return name;
}
int getAge(){
return age;
}
char getSex(){
return sex;
}
void print();
};
void Person::print(){
cout<<"姓名:"<<name<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"性别:"<<sex<<endl;
}
class Student:public Person{
private:
int ID;
double score;
public:
Student(string pName,int pAge,char pSex,int pID,double pScore){
setPerson(pName,pAge,pSex);
ID=pID;
score=pScore;
}
int getID(){
return ID;
}
double getScore(){
return score;
}
void print();
};
void Student::print(){
Person::print();
cout<<"学号:"<<ID<<endl;
cout<<"分数:"<<score<<endl;
}
int main(){
Student s("李华",18,'F',20230011,95);
s.print();
return 0;
}
🔑说明:
????????派生类自动继承基类的成员 getName()、getAge()和 getSex(),在主函数中通过基类和派生类的公有成员函数来进行数据的访问。?
三、派生类的生成过程:
通过例题来分析派生类定义的过程,我们得出派生类的生成经历了以下三个步骤.
- ?(1)吸收基类的成员
- ????????继承后,派生类继承基类中除构造函数和析构函数外的所有成员。注意:派生的过程中构造函数和析构函数都不被继承。本例中 Student 类继承了基类 Person 中所有的成员:ID、score、SetPerson、getName()、getAge()、getSex()。
- ?(2)改造基类成员
- ????????当派生类中同名的属性或行为具有基类的不同特征时,就需要在派生类中重新声明或定义,例如,派生类定义和基类同名的方法: print()。
- ?(3)添加新的成员
- ????????派生类从基类基础上发展而来,但具备自己新的特征,因此需要在派生类中添加新成员,以保证派生类在功能上有所发展。由于基类的构造函数和析构函数都不能继承,派生类中还需要加人新的构造函数和析构函数来完成一些特定的初始化和清理工作。
四、共勉:?
????????以上就是我对C++继承与派生——(1)继承的层次关系的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++继承与派生的理解,请持续关注我哦!!!?
文章来源:https://blog.csdn.net/2301_80585598/article/details/135139438
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!