1动态绑定与静态绑定

把B的对象b强转为A类,那么调用的A的虚函数还是B的虚函数? 这是通过对象来调用,不是通过指针来调用,所以是静态绑定,用call +函数地址来调用,调用的是A的虚函数

pa->vfunc1() 符合动态绑定的三个条件 1 用指针调用 2 向上转型(父类指针指向子类对象) 3 是虚函数   call+指针

2const关于cow的应用

const:常量对象不能调用非常量函数,这点前面老师说过好几次,出错的时候很难检查出来。 const也算函数签名的一部分:函数重载的时候不看返回值类型,只看函数签名,即参数数量和类型是否一致,如果都一致就不叫重载,叫重名,会报错,但const也算函数签名的一部分,如果参数数量和类型一致,但是一个有const一个没const,也算重载。

string copy 时是共享一个string,但当其中一个要改的时候,会临时copy一个用来写(即copy on write),所以标准库里string必须考虑cow,那么当常量字符串调用[],比如const str[5],那么就不用考虑cow,所以标准库要把这种情况区分开来,这才有了两个重载[]的函数。这样一来常量对象只能调用常量成员函数,但非常量对象可以调用常量成员函数和非常量成员函数,为了避免这种情况,所以c++还有条规则,就是那条灰色框框。

3重载new delete

::operator new 重载全局的new,风险很大,因为很多其他函数都会用到

根据原来讲的new和delete需要分成三步和两步,下面例子说明了就算重载了new和delete,前面的步骤没变。

4重载new[]和delete[]

蓝色框里如果无成员函数重载的new和delete则调用全局的new和delete,若有则用成员函数重载的new和delete,若调用::new则是强制调用全局的

每个元素为4(int)+4(long)+4(string)=12个字节,数组元素为5,那么sizeof(Foo)=12x5=60,为什么是64呢,因为分配内存的时候多出了一个大小为4字节记录数组元素个数的内存,如果是虚函数那么就多了根虚指针,每个元素就是16个字节,sizeof()后就是16x5+4=84 ,construct(构造)是从上到下,destruct(析构)是从下到上。

5 不同版本的重载new delete

侯捷老师c++课程笔记 (面向对象高级编程7)相关推荐

  1. (侯捷C++)1.1面向对象高级编程(上)

    一.C++编程简介 1.C++历史 B语言 → C语言 → C++语言(new C → C with Class → C++) 面向对象的语言:C++.Java.C# 2.C++演化 C++ 98(1 ...

  2. (侯捷C++)1.2面向对象高级编程(上)

    1.整体结构 2.三大函数:拷贝构造,拷贝赋值,析构 拷贝构造:第一次出现对象,使用拷贝构造进行创建,例如:String s3(s1). 拷贝赋值:对象已经构造,重新赋值,例如s3 = s2. 编译器 ...

  3. 侯捷C++个人学习笔记面向对象Part2

    目录 conversion function,转换函数 one-argument ctor,仅需要一个实参的构造函数 non-explicit,不明确的 explicit,明确的 pointer-li ...

  4. 侯捷C++课程笔记01: 面向对象高级编程(上)

    本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(上) pdf版本笔记的下载地址: 笔记01_面向对象高级编程(上),排版更美观一点(访问密码:3834) 侯捷C++课程笔记01: 面向对象高 ...

  5. 侯捷C++课程笔记02: 面向对象高级编程(下)

    本笔记根据侯捷老师的课程整理而来:C++面向对象高级编程(下) pdf版本笔记的下载地址: 笔记02_面向对象高级编程(下),排版更美观一点(访问密码:3834) 侯捷C++课程笔记02: 面向对象高 ...

  6. 侯捷老师 c++面向对象编程(上)

    (本博客是笔者根据侯捷老师的课程进行的总结,便于自己复习,也分享于网上,便于和更多人学习交流,若有侵权,请告删,若有误,请不吝赐教)(图来自于pdf文档,需要的朋友可以在评论区留言) 主要分为两章: ...

  7. C++ 面向对象笔记——侯捷老师(一)

    此笔记为侯捷老师的C++面向对象课程笔记,在开篇中,老师首先讲C++的类,并将类分为两种基本类型: 1.类的成员不带指针的类.以复数类为例,讲解类的基本知识. 类的基本构成:成员变量和成员函数.构造函 ...

  8. 侯捷老师-02面向对象高级编程

    侯捷老师-02面向对象高级编程 1.Static使用 Static本质 Static使用 Static使用举例-单例模式 Static使用举例-单例模式(改进) 2.模板使用 Class Templa ...

  9. 侯捷老师-01面向对象高级编程

    侯捷老师-01面向对象高级编程 01面向对象高级编程 1.编程习惯 总结 2.三大函数 2.1 拷贝构造函数.拷贝赋值函数.析构函数(带有指针的类) 2.2 构造函数.析构函数 局部变量.全局变量 3 ...

最新文章

  1. Marvelous Designer衣袖设计教程
  2. 微生物领域SCIE期刊分析(英美各40本,中国大陆0本)
  3. [附下载]英特尔中国研究院携手生态伙伴发布《机器人4.0白皮书》
  4. 【DOM编程艺术】动态创建标记(签)---创建和插入节点
  5. python 利用 whoosh 搭建轻量级搜索
  6. Java中的List
  7. 【排序函数讲解】sort-C++
  8. 联想将推出全新系列笔记本
  9. jquery 逗号分割截取字符串_JS/JQUERY字符串截取分割匹配等处理汇总
  10. ubb转换html,UBB代码转换成HTML代码
  11. Kali dig命令
  12. HTML入门与进阶以及HTML5
  13. icpc 2019 沈阳区域赛
  14. 倾斜摄影文件和BIM文件加入iServer
  15. plor 回归的r方_新祥旭2022考研真题高频词汇背诵50天(十三)
  16. 柔性橡胶发泡材料(FEF)保温材料英国UKCA 认证 - EN 14304
  17. 2、selenium原理和启动浏览器(Chromoption类)
  18. Git使用基础---各种常见错误总结
  19. .Net-C# 第一学期-第三章 上机练习+课后练习(简答题)
  20. 耿明雨出席2021深圳国际珠宝展览会

热门文章

  1. JavaScript语言精粹-读书笔记(1)
  2. 卸载java时遇见的问题
  3. vue3+ElementUI-win10搭建
  4. 智慧路灯助力智慧城市建设
  5. 春节福利|《闲鱼技术2022年度白皮书》公开下载
  6. Jasper:SAOP API 函数
  7. 计算机主板上主要有哪些芯片,电脑主板上主要的芯片及作用
  8. MapNet:Geometry-Aware Learning of Maps for Camera Localization相机定位的几何感知学习地图
  9. 个人博客网站成功上线
  10. 安装Itunes提示“此windows installer软件包有一个问题”