普通成员函数调用虚函数

Posted 每天告诉自己要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了普通成员函数调用虚函数相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;

class A 
public:
    void func() 
        printFunc();
    
protected:
    virtual void printFunc() 
        cout << "AAAA" << endl;
    
;

class B : public A 
public:
    void func() 
        printFunc();
    
protected:
    virtual void printFunc() 
        cout << "BBBBB" << endl;
    
;


int main() 
    B b;
    A* a = &b;
    //这里的a是一个指向子类对象的父类指针
    a->func();
    cout << "11111" << endl;
    b.func();
    return 0;

当a调用func时,因为func不是虚函数,所以会根据指针类型走A类的实现。
但是在A类的成员函数func中,默认传入了a,a是一个指向子类对象的父类指针,因此会在A的func内发生多态,从而调用B类中的虚函数实现。

以上是关于普通成员函数调用虚函数的主要内容,如果未能解决你的问题,请参考以下文章