C++ 类2
- 继承: 联系一起的类有层次关系。
- 基类: 层次关系的根部
- 派生类:
基类负责定义在层次关系中所以类共同拥有的成员,派生类定义其各种特有的成员。
基类类型相关的函数, 派生类不做改变直接继承的函数
某些函数基类希望派生类个字定义适合自身的版本,此时基类就将这些函数声明成虚函数。
class Quote
{
public:
string isbn() const;
virtual double net_price(size_t n) const;
};
派生类必须通过使用类派生列表,指明从哪个基类中继承而来。
class Bulk_quote: public Quote{
public:
double net_price(size_t) const override;
};
派生类必须重新定义虚函数进行声明。
double print_total(ostream & os, const Quote & item, size_t n)
{ double ret=item.net_price(n);
os<< item.isbn()<<n<<"total_due"<<ret<<endl;
return ret;
}
可以使用 print_total(cout, basic, 20);// Quote 类型
print_total(cout, bulk, 20);// Bulk_quote 类型
item 形参是基类的引用。因此函数运行版本由实参决定,在运行时选择函数的版本, 所以动态绑定, 运行时绑定()
基类中通常定义虚析构函数。
virtual 函数,派生类必须要重新定义。 覆盖基类继承来的旧定义。
基类希望派生类有权访问, 同时禁止其他访问, protected.
定义派生类: 使用派生列表, 基类前可有三种访问说明符: public, private, protected
作用是控制派生类从基类继承的成员是否对派生类用户可见。
public: 基类的公有成员也是派生类接口的组成部分。
派生类对象:
派生类自己定义的(非静态)成员子对象;
一个与该派生类继承的基类对应的子对象;
bulk_quota 有四个数据元素: 从quote 继承的bookNo, 和price 数据成员,以及bulk_quote 自己的min_qty 和discount

Quote item;
Bulk_quote bulk;
Quote * p= & item;// p 指向quote 对象
p= & bulk;// p 指向bulk 的quote 部分
Quote & r=bulk;// r 绑定到bulk 的quote 部分;把派生类对象的引用指针用在需要基类引用指针的地方。
派生类必须要使用基类的构造函数初始化它的基类部分。
Bulk_quote(const string & book, double p, size_t qty, double disc):
Quote(book, p),
min_qty(qty), discount(disc){}
};
派生类可以访问基类的公有成员和受保护成员。。
如果基类定义类静态函数, 则在整个继承体系同只存在该成员唯一的定义。
虚函数的调用可能在运行时才被解析。
C++ 类2的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
- .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...
随机推荐
- #509. 「LibreOJ NOI Round #1」动态几何问题
下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...
- 20165223 week2测试补交与总结
测试题二 题目: 在Ubuntu或Windows命令行中 建如下目录结构 Hello.java的内容见附件package isxxxx; (xxxx替换为你的四位学号) 编译运行Hello.java ...
- JDK8中的并行流
1.IntStream.parallel():获取并行流处理 2. Collection中调用parallelStream()获取并行流 3.并行排序Arrays.parallelSort()
- 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)
链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- UOJ#422 小Z的礼物
非常神奇的一个套路......首先min-max容斥一波,变成枚举子集然后求所有子集min的期望. 一个子集的期望怎么求?我们可以求出所有的r个选法中能够选到这个子集的方案数k,那么概率就是k / r ...
- 关于dp(背包)
有关背包,我这几天可是尽受其苦(不得不靠我聪颖的背诵代码的大脑来进行一波操作) Step 1 01背包 关于01背包的主要代码: ;j<=m;j++) { for(int i=n;i& ...
- Git使用全解
起步 关于版本控制 Git 简史 Git 基础 安装 Git 初次运行 Git 前的配置 获取帮助 小结 Git 基础 取得项目的 Git 仓库 记录每次更新到仓库 查看提交历史 撤消操作 远程仓库的 ...
- Day8--Python--文件操作
对文件内部的内容进行操作1.open('文件路径', mode='模式(默认是读r)', encoding='编码') 读取内容: f = open('d:/练习.txt', mode='r', en ...
- QSS网址
http://blog.csdn.net/liang19890820/article/details/51691212 https://www.cnblogs.com/cy568searchx/p/3 ...
- Codeforces Round #529 (Div. 3) C. Powers Of Two(数学????)
传送门 题意: 给出一个整数 n ,问能否将 n 分解成 k 个数之和,且这 k 个数必须是2的幂. 如果可以,输出"YES",并打印出任意一组解,反之输出"NO&quo ...