C++ 虚函数表和虚函数表指针的创建时机

简介: C++ 虚函数表和虚函数表指针的创建时机

一、虚函数表的创建时机

  • 编译器发现类中包含virtual关键字修饰的函数
  • 虚函数表的内容在编译器编译的时候已经生成
  • 虚函数表存放在全局数据区中的只读数据段中
  • 虚函数表是存放虚数的地址的数组

二、虚函数表指针的创建时机

  • 类对象构造的时候,在构造函数,将虚函数表的地址赋值给对象 vptr
  • 如果类没有构造函数,则编译器为类生成默认构造函数,从而为类对象初始化 vptr
  • 继承下,虚函数表指针赋值过程
    调用基类构造函数的时候,先将基类的虚函数表地址赋值给 vptr
    接着调用子类构造函数的时候,又将子类的虚函数表地址赋值给 vptr

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs


相关文章
|
6天前
|
C++
【C++】智能指针
【C++】智能指针
|
4天前
|
编译器 C++
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
|
11天前
|
存储 安全 编译器
C++入门 | auto关键字、范围for、指针空值nullptr
C++入门 | auto关键字、范围for、指针空值nullptr
31 4
|
20天前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
14 2
|
21天前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
16 3
|
4天前
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
6天前
|
C++
C++通过文件指针获取文件大小
C++通过文件指针获取文件大小
10 0
|
6天前
|
编译器 C语言 C++
【C++关键字】指针空值nullptr(C++11)
【C++关键字】指针空值nullptr(C++11)
|
6天前
|
算法 C++ 容器
【C++算法】双指针
【C++算法】双指针
|
7天前
|
安全 C++
【C++航海王:追寻罗杰的编程之路】智能指针
【C++航海王:追寻罗杰的编程之路】智能指针
17 0

热门文章

最新文章