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 @ 2019-08-20 09:52  panda_w  阅读(433)  评论(0)    收藏  举报