基类的指针如何调用派生类的函数
基类的指针怎么调用派生类的函数
假如基类的指针p
怎么调用派生类的函数a()
用p->a()是不行的
------解决方案--------------------
这个还要在基类里面声明a()为虚函数才行 不然基类看不到这个函数
------解决方案--------------------
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();
------解决方案--------------------
强制类型转换应该可以
不过我想知道的是
你是有什么特殊需求还是只是在做理论研究
假如基类的指针p
怎么调用派生类的函数a()
用p->a()是不行的
------解决方案--------------------
这个还要在基类里面声明a()为虚函数才行 不然基类看不到这个函数
------解决方案--------------------
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();
------解决方案--------------------
强制类型转换应该可以
不过我想知道的是
你是有什么特殊需求还是只是在做理论研究