+ -
当前位置:首页 → 问答吧 → c++中父类和派生类

c++中父类和派生类

时间:2011-12-24

来源:互联网

在 c++中,当3父类指针指向派生类对象时,指针如何调用派生类所特有的函数


例如:
#include<iostream>
using namespace std;
class Base
{
public:
  Base(){}
  void virtual print()=0;
};
class Child:public Base
{
public:
  Child(){}  
  void virtual print()
  {
  cout<<"child class\n";
  }
  void printchlid()
  {
  cout<<"child fention\n";
  }
};



#include"Head.h"
#include <iostream>
int main()
{
  Base *base;
  Child child;
  base=&child;
  child.print();
  child.printchlid();
  base->print();
  base->printchild();//这行出问题了,怎么解决让它能调用子类中所特有的函数
  return 0;
}

作者: nhlbengbeng   发布时间: 2011-12-24

base->printchild();//这行出问题了,怎么解决让它能调用子类中所特有的函数

dynamic_cast<Child*>(base)->printchild();

作者: mingliang1212   发布时间: 2011-12-24

在父类中定义完成一样的虚函数

作者: q96456   发布时间: 2011-12-24

if((Child* pc = dynamic_cast<Child*>(base))== NULL)
  std::cout<<"erro";//如果base实际上不是指向child类型,就会为NULL
else
  pc->printchild();

作者: mingliang1212   发布时间: 2011-12-24

从一个父类指针看到只有父类的部分,想调到子类的函数只有2个办法,要么将指针类型转换成子类的,要么让父类也有这个函数。

作者: Maxwell   发布时间: 2011-12-24

两种方法
1:强制转换dynamic_cast
2:定义虚函数
通常是第二种方法吧,在父类中定义相同的虚函数,这是虚函数一个典型的应用

作者: IT_LEAF   发布时间: 2011-12-24

类对象只能直接调用类自己定义的可访问函数和继承来自父类的可访问函数

作者: blh   发布时间: 2011-12-24