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解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...
随机推荐
- 洛谷P3168 任务查询系统
题意:有n个任务,第i个的存在时间是li~ri,有个权值.求t时刻第k大的权值. 这毒瘤...本来是前缀和 -> 主席树,我是树套树...然后光荣TLE. 其实很裸.一开始我写的是每个位置维护一 ...
- CF132E Bits of merry old England
解:略一思索:网络流啊!(别问我是怎么想到的......) 发现跟志愿者招募有点像.于是把图建一下,在下面开一条通道,但是每个点又都要经过,这时我们就无脑上下界一波. 通道向点连边,有费用.每个点向它 ...
- 从CAP理论中分析Eureka与zookeeper的区别
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证 ...
- 字节缓冲流 BufferedOutputStream BufferedInputStream
/*缓冲流:读取数据大量的文件时,读取的速度慢java提供了一套缓冲流 提高io流的效率 * */ package cn.lijun.demo; import java.io.BufferedInpu ...
- java将long数据转为int类型的方法
二.调用intValue()方法 [java] long ll = 300000; int ii= new Long(ll).intValue(); 三.先把long转换成字符串String,然后在转 ...
- python对象-多态
调用不同的子类将会产生不同的行为,而无须明确知道这个子类实际上是什么. 比如,在一个可以播放音频文件的程序中,媒体播放器可能需要加载一个AudioFile对象然后play它,我们把一个play()的方 ...
- 2017-12-14python全栈9期第一天第一节之太白自我介绍和内容大纲
1.计算机基础 2.python历史 3.python的环境 4.Python的发展 5.python的种类 6.变量 7.常量 8.注释 9.用户交互 10.基础类型初始 11.if 12.whil ...
- Http接口开发(自测服务端客户端)
一. Http与Https的区别 1.概念 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从www服务器传 ...
- oracle中查看所有表和字段以及表注释字段注释
获取表:select table_name from user_tables; //当前用户拥有的表 select table_name from all_tables; //所有用户的表 selec ...
- java io系列05之 ObjectInputStream 和 ObjectOutputStream
本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputS ...