我在正确处理方法覆盖抽象类在我的类层次结构中存在 时遇到问题。 我会尽力解释:抽象类中的C++和继承
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
Ok..previous例如,做工精细。该抽象类 方法anyMethod的具体实施将在运行时被调用。 但抽象类是由具有不虚 的方法称为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.
现在,如果我尝试类似的东西:
ptrA = new A();
ptrB = new B();
ptrA->anyMethod(); //prints OtherClass
ptrB->anyMethod(); //prints OtherClass
我是什么误会? 有没有解决方案使ptrA和ptrB打印A和B而不使用cast,typeid等?
请格式化您的代码 – Elalfer 2011-01-24 17:47:44
A和B也应在第二种情况下打印。你从描述中遗漏了什么? – vitaut 2011-01-24 17:53:42