2012-04-22 145 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(); 
}