【C++】C++自学进阶(5):继承(1)——入门

  继承能将定义的新类包含有已有类的所有属性,这样能实现很多新的功能,实际运用上也更加方便。

  已经存在的类叫做基类父类,新建立的类叫做子类派生类。一些概念:单继承(single inheritance)、多重继承(multiple inheritance)。直接继承,间接继承。继承具有传递性非对称性

一、定义方法和派生类的构成

单继承:
class 类名: 继承方式 基类名
{
    ......
};

多重继承:
class 类名: 继承方式 基类名1,继承方式 基类名2......
{
    ......
};

  继承方式有public, private和protected。

  构成时三步走:

  ①接受基类成员。除构造函数和析构函数,全盘接受。所以要精心设计以免浪费空间。

  ②改造基类成员。如建立一个与基类中的成员函数名字、类型、参数表一模一样的函数等等。

  ③添加新的成员。添加自己的成员。

二、继承中的访问控制

  1、公有继承 public

    这种继承建立起来的派生类称为公用派生类,基类称为公用基类。

    至于访问权限,我觉得用书上这个图、表格挺好的。

    在派生类中,私有的(连派生类)也不可以访问,公有还是公有,保护还是保护。

    其中protect成员是只允许基类和派生类使用的,也就是说可以给它们的家族用,但是private就只能自己用,派生类也不能用。

  2、私有继承 private

  对应的,私有派生类,私有基类。

  3、保护继承  protected

  对应的,保护派生类,保护基类。

  主要体现在间接派生类上。间接派生类可以访问它上一级的protected成员,所以protected继承过来的基类成员也可以使用。

时间: 2024-11-05 16:00:57

【C++】C++自学进阶(5):继承(1)——入门的相关文章

【C++】C++自学进阶(6):继承(2)——继续进阶

继承类不能继承基类的构造函数和析构函数,如果派生类需要的话,我们需要为派生类全新定义构造函数和析构函数.一.单继承的构造函数 class Person { protected: char name[10]; char sex; public: //The Constructor of the base class Person(char name[],char sex):sex(sex) { cout<<"Base class constructor!"<<en

ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL

http://www.cnblogs.com/John-Connor/archive/2012/05/03/2478821.html 引言-- 在初级篇中,我们介绍了如何利用基于ASP.NET MVC的Web程序中的Global文件来简单的重写路由.也介绍了它本身的局限性-依赖于路由信息中的键值对: 如果键值对中没有的值,我们无法将其利用凑出我们想要的URL表达式. 初级篇传送门:使用Global路由表定制URL   在进阶篇中,我们将介绍ASP.NET 路由相关类的基类-抽象类RouteBas

推荐系统的循序进阶读物(从入门到精通)

转载一篇文章,作为记录,有时间去看一遍- 为了方便大家从理论到实践,从入门到精通,循序渐进系统地理解和掌握推荐系统相关知识.特做了个读物清单.大家可以按此表阅读,也欢迎提出意见和指出未标明的经典文献以丰富各学科需求(为避免初学者疲于奔命,每个方向只推荐几篇经典文献).1. 中文综述(了解概念-入门篇)a) 个性化推荐系统的研究进展b) 个性化推荐系统评价方法综述2. 英文综述(了解概念-进阶篇)a) 2004ACMTois-Evaluating collaborative filtering r

自学编程开发,从入门到放弃是种什么体验

文/上嵌科技(简书作者) 原文链接:http://www.jianshu.com/p/537ef1046cec 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". 最近有几本书很火,看看你肯定会有感觉. 几本心痛的书 C/C++,Java这些开发语言,在大学计算机专业.理工类专业大多学习,Android,iOS也有不少同学买书或下载视频学习,但是最后都是没有结果. 一方面程序员成为最有"钱途"岗位,需求量见涨,另一方面很多计算机专业,理工类专业的同学,在

Java进阶学习第六天——DOM4J入门

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.04.17 lutianfei none XML约束--schema XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性. schema和DTD的对比(面试题): Schema符合XML语法结构. DOM.SAX等XML API很容易解析出XML Schema文档中的内容. XML Schema对名称空间支持得非常好. XML Schema比XML DTD

Node.js进阶:5分钟入门非对称加密方法

前言 刚回答了SegmentFault上一个兄弟提的问题<非对称解密出错>.这个属于Node.js在安全上的应用,遇到同样问题的人应该不少,基于回答的问题,这里简单总结下. 非对称加密的理论知识,可以参考笔者前面的文章<NODEJS进阶:CRYPTO模块之理论篇>. 完整的代码可以在 <Nodejs学习笔记> 找到,也欢迎大家关注 程序猿小卡的GitHub. 加密.解密方法 在Node.js中,负责安全的模块是crypto.非对称加密中,公钥加密,私钥解密,加解密对应的

Python进阶-----类继承的方式完成包装

包装:python为大家提供了标准数据类型,以及丰富的内置方法,其实在很多场景下我们都需要基于标准数据类型来定制我们自己的数据类型,新增/改写方法,这就用到了我们刚学的继承/派生知识(其他的标准类型均可以通过下面的方式进行二次加工) class List(list): #继承list所有的属性,也可以派生出自己新的,比如append和mid def append(self, p_object): ' 派生自己的append:加上类型检查' if not isinstance(p_object,i

C++进阶--公有继承的二元性

//########################################################################### /* * 公有继承的两元性 * * - 接口的继承 * - 实现的继承 */ class Dog { public: virtual void bark() = 0; //只继承了接口 void run() { cout << "I am running."; } //既继承了接口,也继承了实现 virtual void

Java自学-接口与继承 重写

Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Override 步骤 1 : 父类Item 父类Item有一个方法,叫做effect package property; public class Item { String name; int price; public void buy(){ System.out.println("购买"); } public void effect() { System.out.println