是否有另一种方法从派生中调用基本方法,这是虚拟的

时间:2015-07-22 15:48:48

标签: c++

我想知道是否有另一种方法可以从derived而不是:

调用虚拟基本方法
void Y() //is virtual in base
{
   Base::Y();
}

如果这是重复的,我很抱歉。

1 个答案:

答案 0 :(得分:0)

无论为什么您想要这样做,您都可以使用此备用语法实现相同的功能。您只需在解除引用变量时添加一些解析语法(使用.运算符取消引用的非指针即可实现相同的目的)

#include <iostream>
using namespace std;

class A
{
public:
    virtual void X( )
    {
        cout << "A::X()\n";
    }

    virtual void Y( )
    {
        cout << "A::Y()\n";
    }
};

class B : public A
{
public:
    virtual void X( )
    {
        cout << "B::X()\n";
    }

    virtual void Y( )
    {
        cout << "B::Y()\n";
    }
};

void main( )
{
    B* xb = new B( );

    A* xa = xb;

    xb->X( );
    xb->Y( );

    xa->X( );
    xa->Y( );

    xb->A::X( );
    xb->A::Y( );

    system( "PAUSE" );
}