当前位置:  开发笔记 > 编程语言 > 正文

C++虚函数行为

如何解决《C++虚函数行为》经验,为你挑选了1个好方法。

我在理解上做了一些练习.在编译下面的代码我得到Derived :: disp()调用,然后调用非虚函数"打印".

我的问题是为什么调用派生类"打印"版本而不是基本打印版本甚至"打印"不是虚拟的.

class Base
{
public:
     void print(){
        cout<<"Base::Print()\n";
    }
 virtual void disp(){
    cout<<"Base::Disp()\n";
    }
};

class Derived: public Base
{
public:
    void print(){
        cout<<"Derived::Print()\n";
    }
    void disp(){
    cout<<"Derived::Disp()\n";
    print();
    }
};

void main()
{
    Base *pB = new Derived();

    pB->disp();
}

输出:
Derived :: Disp()
Derived :: Print()



1> Mats Peterss..:

如果在(虚拟或非虚拟)成员函数内调用了非虚函数,则调用该类的成员函数.

如果你打电话给pB->print()主,它会打电话Base::Print.但就目前而言,pB->Disp()调用的基础是从类内部Derived::Disp()调用Derived::PrintDerived.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有