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 }

 

 

笔记


 

转载于:https://www.cnblogs.com/panda-w/p/11381207.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值