正确的头文件语法

时间:2011-12-30 17:54:10

标签: c++ inheritance

我正在尝试了解在从父类继承方法时何时需要在头文件中声明函数。

例如,假设我有以下类:

class parent{
public:
    virtual void foo()= 0;
}

假设我有一个继承自父类的子类,我还必须在子文件头文件中声明foo,还是可以在源文件中为子文件定义方法?

下面的声明会不正确吗?

Headerfile:

class child : public parent{
}

类文件:

child::foo(){
// do something
}

3 个答案:

答案 0 :(得分:1)

基类中的非虚方法在子类中继承,因此您不需要在子类中再次定义或声明它们。在派生类对象上调用的非虚方法将只调用Base类中定义的方法(提供访问说明符规则允许你)

如果在Derived类中再次从基类声明一个方法,则它在派生类中声明一个新方法,隐藏所有具有相同名称的基类方法。这被称为功能隐藏

好读:

<强> What's the meaning of, Warning: Derived::f(char) hides Base::f(double)?

对于虚方法,您不需要在Child类中再次声明Base类方法,您只需要提供一个定义。这被称为功能覆盖

答案 1 :(得分:0)

标题文件:

class Class : public Parent {

public:
    void myMethod();
}

源文件:

void Class::myMethod(){

}

答案 2 :(得分:0)

您不必在子类的定义或标题中声明foo()。它是自动继承的 - 这就是继承的含义。 (当然,函数在基类(public)中必须是private而不是parent,但这是次要的peccadillo。)

您只需在子类的源文件中定义方法。