分清虚函数和纯虚函数的区别:
(1).虚函数是函数前加关键字virtual,一般定义格式为:
virtual 类型 函数名 (参数表)

函数体

(2).纯虚函数的生命格式为:
virtual 类型 函数名 (参数表)=0;
即没有函数体。

(3).带有纯虚函数的类为抽象类:
例:
class 类名

virtual 类型 函数名(参数表)=0;
} 为抽象类。

关于抽象类:
(1).抽象类不能定义对象。
(2).抽象类只能作为基类来使用。
(3).构造函数不能是纯虚函数,析构函数可以是纯虚函数。

关于虚函数:
(1).只有类的成员函数才能说明为虚函数,因为虚函数仅适用于
继承关系的类对象,所以普通不能说明为虚函数。
(2).内联函数不能是虚函数,因为内联函数是在编译时决定其位置。
(3).构造函数不能是虚函数,因为构造时对象还是一片未定型的空间。
(4).析构函数可以是虚函数,而且通常声明为虚函 数。

总结:
(1).当在基类中把成员函数定义为虚函数后,在其派生类中定义的虚函数
必须与基类中的虚函数同名,参数的类型、顺序、个数必须一一对应。
(2).实现这种动态的多态性,必须使用基类类型的指针变量或引用,使该
指针指向不同的派生类的对象,并通过调用指针所指的虚函数才能实现动态的多态性。

实现多态的基本步骤:
(1).在基类中,定义成员函数为虚函数(virtual);
(2).定义基类的公有(public)派生类。
(3).在基类的公有派生中“重载”该虚函数。
(4).定义指向基类的指针变量,它指向基类的公有派生类的对象。

注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数
参数类型和顺序完全相同。

C++多态等知识点的更多相关文章

  1. java 多态 (知识点不完整)

    1.多态的条件 1.要有继承 2.方法重写 3.父类引用指向子类对象 多态中成员访问 1.   访问成员变量:  编译看左边,运行也看左边 f.num = 10 因为这里是父类的,看是父类Father ...

  2. day25 面向对象继承,多态,

    这两天所学的都是面向对象,后面还有几天也是它,面向对象主要有三个大的模块,封装,继承,多态,(组合),昨天主要讲了面向对象的命名空间,还有组合的用法,今天是讲的继承还有继承里面所包括的钻石继承,以及多 ...

  3. c# 第35节 类的多态

    本节内容: 1:多态前戏 2:解决多态的知识点 3:多态两个实例 1:多态前戏 多态源自生活中的现象: 阿拉甲,阿拉乙,阿拉丙,阿拉丁,是人这个类产生的四个对象: 他们的父亲说:世界上女的都是女老虎, ...

  4. 面向对象的继承和多态(is-a)

    继承的主要作用:我们使用继承主要是为了避免出现重复的定义,程序中如果出现多个地方有相同的定义,可以把相同程序提取出来定义为父类. 子类继承父类使用extends关键字,子类具备父类所有的属性和方法,包 ...

  5. C++练习案例1.计算机类(利用多态实现)

    c++简单计算机类 简介 大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢 今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例 ...

  6. java中的继承 和多态。

    package com.aaa.zxf.ajax.test; /** *一. java 中的继承和多态. * * 继承的特性? * 1.实现继承的方式 * A 如何建立继承关系(一个类继承于 另一个类 ...

  7. 201521123101 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对象中 ...

  8. 201521123070 《JAVA程序设计》第4周学习总结

    1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. http://naotu.baidu.com/file/4de6f42e4f4f6cce0531dd9997b04e60?token ...

  9. 201521123101 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 理解类的继承的概念,明白父与子之间关系的 2. 书面作业 1.注释的应用,使用类的注释与方法 ...

随机推荐

  1. linux平台下Tomcat的安装与优化

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...

  2. android编码学习

    虽然以下博客有点老,但很清晰,有不明白的基础知识,可以来这里找找. 2015年最新Android基础入门教程目录(完结版) 1. 环境配置 Android stodio gradle配置踩过的坑 An ...

  3. [Java] zjdbcping:JDBC数据库连接测试工具

    作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...

  4. phpBB3导入版面的Python脚本

    关联的数据表 在phpBB3中导入版面时, 需要处理的有两张表, 一个是 forums, 一个是 acl_groups. 如果是干净的论坛, 可以不保留安装时填入的默认分区和版面, 直接用以下语句初始 ...

  5. 【PHP】PHP 7.4 新特性

    PHP 7.4 预计在 2019 年年末就会正式发布了,本文先来看看一下 PHP 7.4 的新特性. 1.预加载 预加载的实现理论上是可以为 PHP 带来很大的性能提升的.比如说:现在传统的 PHP ...

  6. Linux内核剖析(四)为arm内核构建源码树

    前面说到要做linux底层开发或者编写Linux的驱动,必须建立内核源码树,之前我们提到过在本机上构建源码树—-Linux内核剖析(三),其建立的源码树是针对i686平台的,但是我么嵌入式系统用的是a ...

  7. vue-router2.x使用入门

    组件中的路由 <router-link to=""></router-link> 无参数 <router-link to="/ar/1&qu ...

  8. [svc]证书学习索引

    数字证书基础知识 对称加密/非对称加密细枝末节 openssl对称非对称加密实战 使用OpenSSL实现CA证书的搭建过程 通过openssl生成证书 HTTPS证书生成原理和部署细节 证书各个字段的 ...

  9. MAC Gradle 下载的问题

    1.项目中 gradle/wrapper/gradle-wrapper.properties 中的变量 GRADLE_USER_HOME 可以在 ~/.bash_profile 中配置, 设置为 GR ...

  10. 如何保持github的fork于主干同步

    step1: https://help.github.com/articles/configuring-a-remote-for-a-fork/ step2: https://help.github. ...