继承:方法在数组中调用

时间:2017-05-07 10:26:27

标签: c++ arrays inheritance

我想做从同一基类继承的类。 为了更容易使用,我想将类实例存储在一个数组中,并调用基类提供的方法并在子类中重写。

但是,它并没有像我想的那样工作。

用于说明的代码示例:

class A
{
public:
    A() {}
    ~A() {}

    virtual void F()
    {
        std::cout << "Hello A !" << std::endl;
    }
private:

};

class B : public A
{
public:
    B() {}
    ~B() {}

    virtual void F() override
    {
        std::cout << "Hello B !" << std::endl;
    }
private:

};

int main()
{
    A aArray[2];
    A a;
    B b;

    aArray[0] = a;
    aArray[1] = b;

    std::cout << "Direct call to F" << std::endl;
    a.F();
    b.F();

    std::cout << "Call to F by array" << std::endl;
    aArray[0].F();
    aArray[1].F();

    system("pause");

    return 0;
}

我得到了结果:

Direct call to F
Hello A !
Hello B !
Call to F by array
Hello A !
Hello A !

我的目标是在我写作时找到一种方法:&#34; aArray [1] .F();&#34;这是从B类调用方法的B类实例,而不是A类中的方法。

怎么做? 很多。

Shadleur

0 个答案:

没有答案