假如基类的指针p
怎么调用派生类的函数a()用p->a()是不行的

解决方案 »

  1.   

    再说清楚一点,基类名base,派生类名derived
    base *p;
    *p=new derived()
    之后调用派生类函数要怎么写?
      

  2.   

    1.用虚函数,比如
    class base 
    {
      public:
         virtual void f(){...}
    }
    class derived : pulbic base
     {}
    调用
    base *p;
    *p=new derived();
    p->f();
    2.向下转换
    base *p;
    *p=new derived()
     假设derived class有一函数 fd,而基类没有
    则可以
       (dynamic_cast<derived *>(p))->fd();
      

  3.   

    楼上说的(dynamic_cast<derived *>(p))->fd();这种方法是不是基类中也需要虚函数
      

  4.   

    应该说基类指针怎么调用派生类对象的方法。
    CBaseClass是CBaseClass的派生类,
    Function在基类中定义为虚函数,不以不实现。
    派生类中重新实现Function方法就好
    然后如下调用:
    CBaseClass *pBase = new CSubClass();
    pBase->Function();
    pBase调用的就是派生类对象的方法