• 继承: 联系一起的类有层次关系。
  • 基类: 层次关系的根部
  • 派生类:

基类负责定义在层次关系中所以类共同拥有的成员,派生类定义其各种特有的成员。

基类类型相关的函数, 派生类不做改变直接继承的函数

某些函数基类希望派生类个字定义适合自身的版本,此时基类就将这些函数声明成虚函数。

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的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  9. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  10. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

随机推荐

  1. A1137. Final Grading

    For a student taking the online course "Data Structures" on China University MOOC (http:// ...

  2. 美丽的webpack-bundle-analyzer

    webpack-bundle-analyzer -- Webpack 插件和 CLI 实用程序,她可以将打包后的内容束展示为方便交互的直观树状图,让我们知道我们所构建包中真正引入的内容: 我们可以借助 ...

  3. 第二十五篇-Android 应用资源

    这里介绍android的一些资源文件. 以一个登录界面为例. layout.xml <?xml version="1.0" encoding="utf-8" ...

  4. Vue(基础四)_总结五种父子组件之间的通信方式

    一.前言 这篇文章主要总结了几种通信方式: 1.方式一:使用props: [ ]和$emit()  (适用于单层通信) 2.方式二:$attrs和$listeners(适用于多层) 3.方式三:中央处 ...

  5. php的扩展配置

    第一步:在php的安装目录下找到php.ini-development这个文件,并复制一个副本,修改这个副本的文件名为:php.ini 如下图我的目录为: 第二步:打开这个php.ini,修改 将这里 ...

  6. 微信小程序中出现:脚本错误或者未正确调用 Page()

    错误: ​ 解决方法: //在页面当中的.js文件里面加上 Page({ })即可

  7. Spring_事务管理

    转自:https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html 事务管理是应用系统 ...

  8. flask form表单验证

    新建forms.py文件 #!/usr/bin/env python #-*-coding:utf--*- #导入模块 from flask_wtf import FlaskForm #FlaskFo ...

  9. 【C#】使用bat文件安装卸载Window服务

    1.安装服务 @echo off @title 安装windows服务path %SystemRoot%\Microsoft.NET\Framework\v4.0.30319echo========= ...

  10. NGUI使用图集的精灵换图片

    创建了一个sprite,选择的是某一个图集下的sprite,现在我想点击它来换图片.前提是你的sprite已经加了UIButton 代码如下: public void OnClick() { if ( ...