C++面向对象编程,继承,数据抽象,动态绑定
派生类(derived class)能够继承基类(base class )定义的成员:
1)、派生类可以无需改变而使用那些与派生类具体特性不相关的操作
2)、可以重新定义那些与派生类相关的成员函数,将函数特化,考虑派生类型的特性
3)、除了从基类继承的成员外,派生类还可以定义更多的成员
C++中,基类必须指出希望派生类重新定义那些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。
1、定义基类(基类成员):
virtual: 除了构造函数之外,任何非static成员函数都可以是虚函数。保留字virtual的目的是启用动态绑定:在C++中,通过基类的引用(或指针)调用函数时,发生动态绑定。引用(或指针)既可以指向基类对象也可以指向派生类对象。
public和private成员:用户和派生类可以访问public成员而不能访问private成员。
protected成员:允许派生类访问但是仍然禁止其他用户访问这些成员。
提供给派生类型的接口是protected成员和public成员的组合
2、派生类
定义派生类:
class classname: access-label base-class
这里的access-label(访问标号)可以是public,protected或privated。派生类可以定义0个或者多个访问标号,指定跟随其后的成员的访问级别。对类所继承的成员的访问由基类中的成员访问集合和派生类派生列表中使用的访问标号共同控制,派生类可以进一步限制但不能放松对所继承的成员的访问。
[注意]:也可以使用using声明访问基类中的名字。C++primer P484
默认继承保护级别:使用class保留字定义的派生类默认具有private继承,而用struct保留字定义的类默认具有public继承
友元关系与继承:
析构函数:类的特殊的成员函数,作用:用于释放在构造函数或者对象生命期内获取的资源。撤销类对象时会自动调用析构函数,来完成所需的资源回收,作为类构造函数的补充。
~Sales_items() { }
析构函数并不仅仅限于用来释放资源。一般而言,析构函数可以执行任意操作,该操作是类设计者希望在该类对象的使用完毕之后执行的。
编写析构函数:在类内定义,在类名字之前加上一个代字号(~)
C++面向对象编程,继承,数据抽象,动态绑定的更多相关文章
- C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域
面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:假设不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这样的类作用域的层次嵌套使 ...
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...
- Javascript 面向对象编程—继承和封装
前 言 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类) ...
- Javascript 进阶 面向对象编程 继承的一个样例
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承.这篇使用一个样例来展示js怎样面向对象编程.以及怎样基于类实现继承. 1. ...
- Javascript 进阶 面向对象编程 继承的一个例子
Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承. 1. ...
- python面向对象编程 继承 组合 接口和抽象类
1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...
- Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- 【前端学习】javascript面向对象编程(继承和复用)
前言 继承,代码复用的一种模式.和其它高级程序语言相比,javascript有点点不一样,它是一门纯面向对象的语言,在JS中,没有类的概念,但也可以通过原型(prototype)来模拟对象 ...
- CSIC_716_20191126【面向对象编程--继承】
继承 什么是继承:继承是新建类的一种方式,通过此方式生成的类称为子类.或者 派生类,被继承的类称为父类.基类或超类.在python中,一个子类可以继承多个父类. 继承的作用:减少代码的冗余,提高开发效 ...
随机推荐
- 【blockly教程】第四章 Blockly之选择结构
今天,我们通过一个游戏来学习选择结构,游戏的地址如下:https://blockly-games.appspot.com/bird?lang=en本游戏分为10关:主要游戏规则如下:①主界面是游戏的运 ...
- 成都Uber优步司机奖励政策(3月2日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- mysql主从集群搭建;(集群复制数据)
1.搭建mysql 5.7环境chown mysql:mysql -R /data/groupadd mysqluseradd -g mysql mysql yum install numactlrp ...
- ajax跨域请求php
在众多站群中,不同功能的系统使用独立的一个域名,各系统之间存在相互调用的关系.使用js的XMLHttpRequest调用其他域名提示跨域权限不足.有些可能认为都同属于同一个顶级域名或者说域名一模一样怎 ...
- 惊喜Skr人,Istio的创始人Shriram Rajagopalan手把手教你如何使用Istio
Shriram与来自Google.Lyft.IBM和其他公司的社区贡献者们一起并肩作战,积极地向Istio和Envoy项目作贡献.同时,Shriram是IBM的Amalgam8项目的创始成员之一.目前 ...
- 「题目代码」P1054~P1059(Java)
P1054 猴子吃桃 import java.util.*; import java.io.*; import java.math.BigInteger; import java.lang.Chara ...
- 通过 zxing 生成二维码
二维码现在随处可见,在日常的开发中,也会经常涉及到二维码的生成,特别是开发一些活动或者推广方面的功能时,二维码甚至成为必备功能点.本文介绍通过 google 的 zxing 包生成带 logo 的二维 ...
- VMware 15.0下载及安装教程
虚拟机 VMware WorkStation Pro15 下载及安装详细解 9虚拟机 VMware WorkStation Pro15 下载及安装详细解. 虚拟机官方网站: https://www.v ...
- Unity 编辑器扩展
自定义检视面板的使用: 先是定义一个脚本文件,我们来修饰它的检视面板: [HelpURL("http://www.baidu.com")] public class Atr : M ...
- ubuntu16.04图形界面安装中文输入法,中文展示
打开system Settings 设置 打开设置语言 安装Language Support 点击installed languages 选择chinese 打勾,安装 安装IBus框 ...