1.动态特性

静态特性和动态特性,编译时和运行时

虚函数

(1)虚函数的叫覆盖,虚函数不是实现多态的唯一手段(其他语言也可能采用别的方法)。

抽象基类

(1)如果将基类的虚函数声明为纯虚函数,则基类为抽象基类。

(2)抽象基类不能被实例化,只能用来被继承用。

动态绑定

(1)每个具有虚函数的类称为多态类,这个虚函数可以是从虚函数继承的也可以是自己新增加的。

(2)C++编译器必须至少为每个多态类创建一个虚函数表(vtable),这里面实际上是一个指针数组,存放着这个类的

所有虚函数地址,也包括继承但未改写的虚函数。

(3)每个多态对象都有一个隐含指针vptr。

(4)派生类定义的名字(对象或函数名)将义无反顾的遮蔽(即隐藏)掉基类中任何同名的对象或函数。

(5)派生类中若是与基类中虚函数同名,而参数不同,那么编译器直接认为是隐藏,不会发生动态绑定。

运行时绑定

(1)C++多态手段有两种一种是虚函数机制,还有一种是RTTI技术

多态数组

(1)通过基类指针删除一个由派生类对象组成的数组,结果未定义。

(2)多态和指针算术运算不能混合运用,而数组操作基本会涉及到指针运算,因而多态和数组不应该混用。

(3)不要在数组中直接存放多态对象,而是换成基类指针或者基类的智能指针。

C++对象模型:

C++动态特性和C++对象模型——《高质量程序设计12章》的更多相关文章

  1. 高质量程序设计指南C/C++语言——C++/C程序设计入门

    1.在C++/C中,全局变量(extern或static)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束之后销毁,因此在我们的代码中根本没有机会初始化它们,于是语言及其实 ...

  2. 《高质量程序设计指南:C++/C语言》面试题整理

    本试题仅用于考查C++/C程序员的基本编程技能.内容限于C++/C常用 语法,不涉及 数据结构. 算法以及深奥的语法.考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软 ...

  3. C++,C程序设计入门——《高质量程序设计第4章》

    1. 连接规范 1. extern “C” 2. 一部分采用C的连接规范 #ifdef __cplusplus extern "C" { #endif #ifdef __cplus ...

  4. 内存管理(——高质量程序设计语言C/C++第16章)

    内存的分配方式: 1.静态存储区分配:全局变量,static变量等,在程序编译时已经分配了存储内存,在程序运行的整个期间一直存在 2.程序的堆栈上:程序的局部变量,包括程序的形参等,只存在于程序的运行 ...

  5. 高质量程序设计指南C/C++语言——malloc/free使用要点

  6. 高质量程序设计指南C/C++语言——有了malloc/free为什么还要new/delete?

  7. 高质量程序设计指南C/C++语言——内存管理

    • free()和delete只是把指针所指的内容给释放掉,并没有把指针本身删掉.指针被free()或delete以后其地址仍然不变(不等于NULL),只是该地址对应的内存是垃圾——p成了野指针.如果 ...

  8. 高质量程序设计指南C/C++语言——C++/C常量(2)

  9. 高质量程序设计指南C/C++语言——C++/C程序设计入门(4)

    *switch结构的break语句只是一个“jmp”指令,其作用就是跳到switch结构的结尾处 *标准C++/C语言提供3种循环:do/while.while和for,它们都在条件表达式为TRUE( ...

随机推荐

  1. dubbo系列--重要概念介绍

    dubbo架构图 节点角色说明 整体设计 proxyFactory:就是为了获取一个接口的代理类,例如获取一个远程接口的代理.它有2个方法,代表2个作用 getInvoker:针对server端,将服 ...

  2. FPGA开发中的脚本语言

    多数FPGA开发者都习惯图形化界面(GUI).GUI方式简单易学,为小项目提供了一键式流程.然而,随着FPGA项目越来越复杂,在很多情况下GUI工具就阻碍了工作效率.因为GUI工具不能对整个开发过程提 ...

  3. linux下查看nginx配置文件地址

    which nginx/usr/sbin/nginx -t

  4. 再遇BGP

    第一次遇到BGP,是在大学的课堂上,现在再次看到它,有种深深的无奈,我只记得它的名字,忘记了它的样子. 那么什么是BGP呢? 翻译过来就是边界网关协议,一个用来网络数据进行选路的路由协议,使用TCP协 ...

  5. Mysql数据库表的迁移和表的复制

    同一台服务器上的,数据库之间的表的迁移: create table db.tablename as select * from db2.tablename; 此sql使用于mysql,从一台服务器上的 ...

  6. PHP一句话后门过狗姿势万千之后门构造与隐藏

    第二章节主要带给大家一些后门构造思路,与安全狗文件特征检测的机制. 另外强调一下,这篇文章需要大家对于php有一定的认识. 本章节分为三大部分,第一部分针对初级,分析菜刀php代码的执行过程,较基础: ...

  7. 小知识~VS2012的xamarin加载失败解决

    1 由于Nuget版本过低导致的,工具->扩展和更新->在线更新->对nuget程序包程序器进行升级即可 错误代码: 错误    4    错误: 缺少来自类“NuGet.Visua ...

  8. 【算法】最长回文子串 longest palindrome substring

    对于字符串S, 要找到它最长的回文子串,能想到的最暴力方法,应该是对于每个元素i-th都向左向右对称搜索,最后用一个数组span 记录下相对应元素i-th为中心的回文子串长度. 那么问题来了: 1. ...

  9. laravel composer 扩展包开发(超详细)

    laravel composer 扩展包开发(超详细) 置顶 2018年02月05日 11:09:16 Simael__Aex 阅读数:10396    版权声明:转载请注明出处:http://blo ...

  10. python struct.pack方法报错argument for 's' must be a bytes object 解决

    参考 https://blog.csdn.net/weixin_38383877/article/details/81100192 在python3下使用struct模块代码 fileHead = s ...