C++ 笔记
来源:互联网 发布:linux中history d命令 编辑:程序博客网 时间:2024/05/29 15:28
1。 关于多态:函数代码是被内存的代码区的,函数名是一段代码的首地址。除了虚函数外,其他函数的调用机制都是“按名调用”,
即编译器径直到代码区按名找到该函数,调用、执行之。
此外还有一种调用方式:当指针指向一个函数,可以用该指针名充当函数名来调用该函数——“按址调用”。即函数调用分为“按名
调用”和“按址调用”两种方式。
non-virtual function只属于静态绑定。无论用引用或指针还是对象调用,都只属于静态绑定。
虚函数可以动态绑定也可以静态绑定,究竟是那种绑定,完全取决于通过引用或指针调用还是对象调用。可以在运行时确定虚函数
调用:通过引用或指针调用虚函数是,编译器将生成必要的代码,在运行时确定该调用哪个函数,被调用的是与动态类型相对应的成员函数。
虚函数的调用机制是:抛开函数名称,完全按指定位置在数组上定位,取其内容。而不管找到的是哪个函数。只要把基类原来的函数
位置换成派生类的新函数,就可以调用到子类重写的函数。通俗地讲就是“旧瓶装新酒”。
Derived类新增了虚函数g()。但Base类的指针探查不到子类新增的虚函数。因为,尽管Base类的指针pb已将虚函数的的搜索引导到
Derived类对象上,真正被调用的是子类重写的虚函数。探查的依据是由Base类的 vftable 表来决定的——表的项数、各项的位置。Base类的
vftable表中没有这一项。error C2039: ‘g’ : is not a member of ‘Base‘,注意编译器依据的是基类。
- C - 笔记
- c笔记
- c笔记
- C 笔记
- c 笔记
- C笔记
- C笔记
- C笔记
- C 笔记
- C 笔记
- C笔记
- c 笔记
- C笔记
- C笔记
- C笔记
- C++/C笔记
- 笔记(C/C++)
- C++/C学习笔记
- libpcap中<pcap.h>的平台无关性之条件编译
- 基于JAX的WebService实现demo(一)
- java ssl https 连接详解 生成证书
- 采用opencv_cascadetrain进行训练的步骤及注意事项
- List.Set和Map的区别
- C++ 笔记
- Computers
- C语言变量声明及内存分配
- java中正则表达式的常用法以及规则,邮箱验证,密码等。
- 匿名对象和object的转换
- poj3411 Paid Roads---dfs
- 括号匹配
- Oracle中job的使用详解
- QT中phonon的安装和使用