- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
继承与派生 继承的概念 所谓继承就是在现有类的基础上再创建新类的编程技术。新创建的类通过继承自动获得原有类的数据成员和成员函数,从而有效的避免了代码的重复编写。 继承(inheritance)是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。 继承的概念 C++中,现在要设计一个新类学生,学生具有人类的一切属性和行为,比如姓名,性别等,但也有自己新的属性,比如学号,成绩等,这样完全可以借助人类来描述新学生类:学生是具有学号,成绩等属性的一类人。这样人类的属性就不必再在学生类中加以描述了。 继承的优点: 1 实现了代码的重用 面向过程的程序设计中,开发一个新的程序很少能在以前的程序中找到完全符合的程序部件,功能类似的部件也需要调整和修改,这使得开发效率低下。有了继承机制后,程序员可以通过继承的方式,继承已有类的数据成员和成员函数,使代码重用成为了可能。 继承的优点: 2 继承机制准确地表现出了现实事物的分层次,分类别的特征。 程序设计中使用继承的方式使程序更加贴近于客观世界,从而在计算机的世界里更加真实贴切的描述出了客观世界。 继承的书写格式 class 派生类名:继承方式 基类名 { 派生类新增加的成员 }; class Student: public person {private: int score; } ; 继承方式有三种:公有继承、私有继承和保护继承,分别用关键字public、private和protected表示。缺省情况下为私有继承。 派生类的生成过程 第二步中,新成员如是成员函数,参数表也必须一样,否则是重载。 第三步中,添加新成员才是继承与派生的核心特征。 第四步是重写构造函数与析构函数,派生类不继承这两种函数。不管原来的函数是否可用一律重写。 class student:public Person { private: int m_No; public: int GetNo() {return m_No;} void Set_infor(string n,int no) {m_strName=n;m_No=no;} }; main() {student a; string name; int no; cinnameno; a.Set_infor(name,no); couta.Getname() 学号为:a.GetNo()endl; } 构造函数初始化表 构造函数的初始化方式: 1 用“=”直接赋值完成数据成员初始化 2 用初始化表完成初始化,初始化表位于函数参数表之后,在函数体 { } 之前。该表里的初始化工作发生在函数体内的任何代码被执行之前。 构造函数初始化表 #include string using namespace std; class person {private: string name; public: person(string n1) : name(n1) { } }; 构造函数初始化表 派生类初始化基类成员必须使用初始化表 基类是派生类的基础,所以派生类构造函数完成基类成员的初始化时,先要保证基类成员先被初始化,派生类的构造函数中如果要构造基类成员,要使用初始化列表的形式。 初始化基类成员应采用初始化表的形式调用基类构造函数的方式完成. 派生类的构造函数 ⑴派生类构造函数的一般格式为:派生类::派生类构造函数名(参数表):基类构造函数名(参数表) { 派生类成员的初始化; } class person { int age; public: person(int a) { age=a; } }; class student:public person { int No; public: student(int a, int n): person(a) { No=n;} }; 注意: 如果在基类中没有定义构造函数,或定义了没有参数的构造函数,那么在定义派生类构造函数时可不写基类构造函数。调用派生类构造函数时系统会自动首先调用基类的默认构造函数。 class person {int age; public: person() { age=20; } }; class student:public person {int N
文档评论(0)