C++之虚函数的实现技术

cpp 复制代码
#include <iostream>
using namespace std;
class A{
public:
    int m;
};
class B{
public:
    int m;
    virtual void foo(void){
        
    }
};
int main(void){
    A a;
    B b;
    cout << "a size : " << sizeof(a) << endl;
    cout << "b size : " << sizeof(b) << endl;
    return 0;
}
  • 每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针
  • 当编译器编译以下test函数时只知道pb是B*类型的指针,并不知道它指向的具体对象类型 :pb可能指向的是B的对象,也可能指向的是D的对象。
  • 只有当程序执行过程中给test函数传递了具体参数才能确定pb指向了哪个对象,从而确定访问哪个虚表,从而实现了多态
相关推荐
·present·16 小时前
CSAPP(lecture 4_01)
c语言·c++
FPGA小迷弟16 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
程序员-King.17 小时前
【ROS1】Noetic 开发工作流程与常用命令
c++·ubuntu·ros
云深麋鹿17 小时前
C++ | 基于红黑树实现mymap与myset
开发语言·c++
傲世仙尊18 小时前
string增删查改-insert-erase-replace与find加substr组合技
c++
·present·20 小时前
CSAPP(lecture 3)
c++
别动我齐刘海20 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
basketball61620 小时前
C++ 中字符串与常见类型的转换总结
开发语言·c++
等我调个Bug21 小时前
C++智能指针通俗讲解
开发语言·c++
kyle~1 天前
时间同步 --- PTP 与 Scheduled Action Command
c++·数码相机·机器人·传感器