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中,一个子类可以继承多个父类. 继承的作用:减少代码的冗余,提高开发效 ... 
随机推荐
- 两步搞定一台电脑同时开启多个tomcat
			1. 修改tomcat中的某些参数,为了避免启动tomcat时出现冲突,编辑bin/startup.bat, 在文件第一行添加如下两行(必须第一行才有效) SET JAVA_HOME=C:\webso ... 
- javascript array.property.slice.call
			function foo() { //var var1=Array.prototype.slice.call(arguments); var var1=[].slice.call(arguments) ... 
- Fliptil_KEY
			Fliptil(fliptile.pas/c/cpp) [问题描述] 约翰知道,那些高智力又快乐的奶牛产奶量特别高.所以他做了一个翻瓦片的益智游戏来娱乐奶牛. 在一个M×N的骨架上,每一个格子里都有一 ... 
- Web自动化selenium技术快速实现爬虫
			selenium是大家众所周知的web自动化测试框架,主要用来完成web网站项目的自动化测试,但其实如果要实现一个web爬虫,去某些网站爬取数据,其实用selenium来实现也很方便. 比如,我们现在 ... 
- Linux命令应用大词典-第3章 文本编辑器
			3.1 vi:文本编辑器 3.2 nano:编辑器 3.3 view:文办编辑器 3.4 ex:文本编辑器 3.5 ed:文本编辑器 3.6 red:文本编辑器 3.1 vi:文本编辑器 1.对文本创 ... 
- 前端开发工程师 - 02.JavaScript程序设计 - 第2章.进阶篇
			第2章--进阶篇 类型进阶 类型: Undefined Null Boolean String Number Object 原始类型(值类型):undefined, null, true, " ... 
- GET请求的写法-jmeter
			第一种写法:可以向post 请求一样写 第二种写法: /pinter/com/getSku?id=${__Random(1,100,rdmNum)} 
- mahout协同过滤算法各接口
			Mahout协同过滤算法 Mahout使用了Taste来提高协同过滤算法的实现,它是一个基于Java实现的可扩展的,高效的推荐引擎.Taste既实现了最基本的基于用户的和基于内容的推荐算法,同时也提供 ... 
- leetcode7_C++整数反转
			给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 输出: 示例 2: 输入: - 输出: - 示例 3: 输入: 输出: 注意: 假设我们的环境只能存 ... 
- fp-growth树创建代码及详细注释
			事务集过滤重排: #FP树节点结构 class treeNode: def __init__(self,nameValue,numOccur,parentNode): self.name=nameVa ... 
