基类调用派生类函数

如果是基类中的virtual function,并且派生类也对其进行了override,则

用基类的指针或者引用操纵派生类的指针或引用可以通过自动upcast直接使用派生类

如果基类中没有派生类的一个函数,而通过基类的指针或者引用操纵派生类的指针或引用,

必须用显示downcast才可以使用,比如:

class Base {};
class Derived : public Base {
public:
  void f() { cout << "Derived::f()\n"; }
};

Base* bptr = new Derived;
static_cast<Derived*>(bptr)->f();

或者

((Derived*)(bptr))->f();

否则会得到编译器错误。

posted @ 2013-09-13 14:22  shinecolin  阅读(884)  评论(0编辑  收藏  举报