c++内存模型四
来源:互联网 发布:md204l编程软件 编辑:程序博客网 时间:2024/05/17 23:42
C++中多态(polymorphism)表示以一个public base class 的指针或 reference,寻址出一个derived class object的意思。
继承:
1)它可以继承base class 所声明的 virtual function的函数实体,该函数实体的地址会拷贝到derived class的virtual table相对应的slot中。
2)它可以加入新的virtual function,这时候virtual table 的尺寸会增加一个slot,新的函数实体地址会被放入该slot中。
ptr->z();
其中z()是虚函数,那么什么信息才能让我们在执行期调用正确的z()实体?
1)ptr 所指对象的真实类型,这可使我们选择正确的z()实体;
2)z()实体位置,以便我能够调用它;
那么如何在编译时期设定virtual function 的调用呢?
1)一般而言,并不知道ptr所指的真正类型,但却知道ptr可以存取到该对象的virtual table;
2)虽然不知道哪一个z()函数实体会被调用,但却知道每一个z()函数地址在虚函数表中的slot位置;
这些信息使得编译器可以转化为(*ptr->vptr[4])(ptr);//在slot 4 位置
唯一一个在执行期才能知道的东西是:slot 4所指的到底是哪一个z()函数实体?
一个指向member function的指针:
double(Point::*pmf)();
pmf = &Point::x;
调用它:
(origin.*pmf)();
或
(ptr->*pmf)();
这样操作会被编译器转化为:
(pmf)(&origin);
和
(pmf)(ptr);
- Java内存模型四
- c++内存模型四
- 内存四区模型
- 内存四区模型
- 内存四驱模型
- 内存四区模型
- c/c++关于内存四区的模型。
- 【C语言提高04】程序的内存四区模型
- C语言:内存四区和函数调用模型
- C语言模型:内存四区模型和函数调用模型
- C语言提高之技术模型层次、学习标准、特点、内存四区、函数调用模型
- linux c内存模型
- C/C++内存模型
- c语言内存模型
- C内存模型
- C内存模型
- C/C++内存模型
- C语言之指针专题三:理解指针要和内存四区模型和函数调用模型相结合
- R6034错误
- 读书有感——大数据之“大”
- 解决Android布局中ScrollView与ListView的冲突
- php生成图片验证码
- 设备实时监控
- c++内存模型四
- Mysql数据同步方案:Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)
- 会影响你一生的职业建议
- MAP 不能存动态DATE类
- Java内部类
- oracle sql性能优化
- DLL相关
- 公有云和私有云的区别
- 第三周作业