C++_练习—多态_验证vptr分布初始化

验证vptr分布初始化


 

vptr指针是从父类逐渐指向子类的虚函数表

 

复制代码
 1 // 验证vptr分布初始化
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 class parent {
 8 public:
 9     parent(int a) {
10         this->a = a;
11         cout << "parent 构造函数 =  " << a << endl;
12         pri();
13     }
14 
15     virtual void pri(void) {
16         cout << "parent_pri =  "<< a << endl;
17     }
18 
19 private:
20     int a;
21 };
22 
23 class child :public parent {
24 public:
25     child(int b) :parent(6) {
26         this->b = b;
27         cout << "child 构造函数 = " <<  b << endl;
28         
29     }
30 
31     virtual void pri(void) {
32         cout << "child_pri  =  " << b << endl;
33     }
34 
35 private:
36     int b;
37 };
38 
39 int main(void)
40 {
41     child chi(2);  // 先调用父类构造函数,再调用子类构造函数,所以一共调用三次构造函数
42 
43     // 如果我在父类的构造函数调用 pri ,则他会调用父类的pri还是子类的 pri ???
44     parent *p = &chi;
45 
46     //结果调用的是父类的pri ,证明vptr指针是从父类逐渐指向子类的虚函数表
47 
48     system("pause");
49 
50     return 0;
51 }
复制代码

 

 

笔记


 

posted @   panda_w  阅读(421)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示