从child调用父方法,类似于调用“super”(C ++)

时间:2012-03-27 09:04:58

标签: c++ inheritance

是否可以在子方法中“重用”父方法并添加功能,就像在Java中使用super运算符一样?

parent.method(int a){
  a++;
}

child.method(int a /*would be nice w/out*/){
  printf("%d",a);
}

我知道这可能是一个非常基本的问题,抱歉。

我知道我可以将方法复制/粘贴到子类,并通过重载在那里添加功能;我正在寻找一种更方便的方式。

4 个答案:

答案 0 :(得分:6)

您可以使用__super执行此操作,但它是Microsoft扩展程序。

void CChild::function( int nParam )
{
    __super::function( nParam );
}

或者,您可以从派生类中显式调用基本实现:

void CChild::function( int nParam )
{
    CParent::function( nParam );
}

答案 1 :(得分:6)

您可以通过使用父类的名称限定成员函数名称来调用子成员函数中的父成员函数:

void child::method()
{
    parent::method();
}

答案 2 :(得分:4)

是的,没有super个关键字,但您只需要提供父类的名称。

int child::method(int a ){ 
  // call base class
  int i = parent::method(a);
  printf("%d",a); 
} 

答案 3 :(得分:1)

parent.method(int a){
  a++;
}

child::method(int a /*would be nice w/out*/){
  printf("%d",a);
  parent::method(a);
}