- 1、本文档共127页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
济南大学C第五章类继承
第五章 继承与派生 ;5.1 继承与派生的概念
5.2派生类的声明方式
5.3派生类的构成
5.4派生类成员的访问属性
类型兼容规则
5.5派生类的构造函数和析构函数
5.6多重继承 ;5.1 继承与派生的概念 ; 如果另一个部门除了需要已有的数据外,还需要地址信息,你可以再声明另一个类
class Student1
{private :
int num;
string name;
char sex;
char addr[20];
public:
void display()
{ coutnum: numendl;
coutname: nameendl;
coutsex: sexendl;
cout address: addrendl;
}
}; ; 可以看到新类中大部分成员是原来已有的。人们自然会想到能否利用原来声明的类student,加上新内容即可,以减少重复的工作。这就引出C++的继承机制。
所谓继承是在已存在的类A 的基础上建立一个新类B。类A称为基类或父类,类B 称作派生类或子类。子类从父类获得其已有的特性,这种现象称作类的继承。从另一个角度看从父类产生子类,称作类的派生。;图5.2 ;图5.4 ;5.2 派生类的声明方式 ; class Student1: public Student
{ private:
int age;
string addr;
public:
void display_1()
{ cout age: ageendl;
cout address: addrendl;}
} ;;5.3 派生类的构成 ; 派生类中的成员:
(1)从基类接收成员。
派生类将基类除构造函数和析构函数外的所有成员接收过来。
(2)调整从基类接收的成员。
通过继承方式改变基类成员在派生类中的访问属性,
在派生类中声明一个与基类成员同名的成员屏蔽基类的同名成员,注意如是成员函数不仅要函数名相同,而且函数的参数也要相同,屏蔽的含义是用新成员取代旧成员。; (3)在声明派生类时增加成员,它体现了派生类对基类功能的扩充。
(4)在声明派生类时,还要自己定义派生类的构造函数。;5.4 派生类成员的访问属性 ; 5.4.1 公有继承
5.4.2 私有继承
5.4.3 保护成员和保护继承
5.4.4 多级派生时的访问属性
;5.4.1 公用继承 ;例5.1 派生类访问公有继承的基类成员。; class Student // 声明基类
{
private :
int num;
string name;
char sex;
public:
void get_value()
{
cinnumnamesex;
}
void display( )
{
coutnum: numendl;
coutname: nameendl;
coutsex: sexendl;
}
}; ; class Student1: public Student
{private:
int age;
string addr;
public:
void get_value_1()
{cinageaddr;}
void display_1()
{ //coutnum: numendl; // 错误
//coutname: nameendl; // 错误
//coutsex: sexendl; // 错误
coutage: ageendl; // 正确
coutaddress: addrendl;} // 正确
};; 由于基类的私有成员对派生类说是不能访问的,所以派生类的成员函数display_1不能直接访问基类的私有成员。只能通过基类的公有成员函数访问基类的私有成员。
因为是公有继承,基类的公有成员在派生类
文档评论(0)