C++和抽象类中的继承

Hei*_*bug 3 c++ inheritance class abstract

我有一个问题,正确处理方法覆盖我的类层次结构中存在抽象类的位置.我会试着解释一下:

class AbstractClass{
public:
    virtual void anyMethod() = 0;
};

class A : public AbstractClass {
    void anyMethod() {
        // A implementation of anyMethod
        cout << "A";
    }
};

class B : public AbstractClass {
    void anyMethod() {
        // B implementation of anyMethod
        cout << "B";
    }
};

AbstractClass *ptrA, *ptrB;

ptrA = new A();
ptrB = new B();
ptrA->anyMethod();  //prints A
ptrB->anyMethod();  //prints B
Run Code Online (Sandbox Code Playgroud)

好的..以前的示例工作正常.. AbstractClass方法的具体实现anyMethod将在运行时调用.但是AbstractClass是从另一个基类派生的,它有一个非虚拟的方法,叫做anyMethod:

class OtherClass {
public:
    void anyMethod() {
        cout << "OtherClass";
    }
};

class AbstractClass : public OtherClass {
public:
    virtual void anyMethod() = 0;
};

//A and B declared the same way as described before.
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试这样的事情:

ptrA = new A();
ptrB = new B();
ptrA->anyMethod();  //prints OtherClass
ptrB->anyMethod();  //prints OtherClass
Run Code Online (Sandbox Code Playgroud)

我有什么误会?有没有使用cast,typeid等制作ptrA和ptrB打印A和B的解决方案?

Gra*_*min 5

你为什么不这样做:

class OtherClass 
{
    public:
    virtual void anyMethod()
    {
       cout << "OtherClass";
    };
}
Run Code Online (Sandbox Code Playgroud)

那应该可以解决你的问题