2012-04-22 143 views
0

可能重複:
Is there a way to call an object's base class method that's overriden? (C++)如何從C++派生類調用基類方法?

第一個問題是調用超()構造在Java相同C首先初始化超級類構造++等。

sub() : super(){} 


是有辦法來調用在C超類方法象++在Java

離。

public sub(){ 
super.someMethod(); 

}

+0

可能重複[C++:如何調用從派生類功能的父類函數( http://stackoverflow.com/q/357307/),[有沒有辦法調用被覆蓋的對象的基類方法? (C++)](http://stackoverflow.com/q/1619769/) – outis 2012-04-22 00:05:26

回答

6

要調用類的基類的構造,你怎麼稱呼它爲BaseClassName(args)。例如:

class A 
{ 
public: 
    A() { } 
    virtual void Foo() { std::cout << "A's foo" << std::endl; } 
}; 

class B : public A 
{ 
public: 
    B() : A() { } 
    void Foo(); 
}; 

調用方法的基類版本,你做BaseClassName::MethodName

void B::Foo() 
{ 
    std::cout << "B's foo" << std::endl; 
    A::Foo(); 
}