zoukankan      html  css  js  c++  java
  • 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 }

    笔记


  • 相关阅读:
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
    Learn Prolog Now 翻译
  • 原文地址:https://www.cnblogs.com/panda-w/p/11381207.html
Copyright © 2011-2022 走看看