我想了解从父类继承方法时何时需要在头文件中声明函数。
例如,假设我有以下类(class):
class parent{
public:
virtual void foo()= 0;
}
假设我有一个继承自父类的子类,我是否还必须在子类的头文件中声明 foo,或者我是否可以简单地在子类的源文件中定义方法?
以下声明是否不正确?
头文件:
class child : public parent{
}
类文件:
child::foo(){
// do something
}
最佳答案
基类的非虚方法在子类中继承,所以你不需要在子类中再次定义或声明它们,在派生类对象上调用的非虚方法将简单地调用基类中定义的方法(提供的访问说明符规则允许您)
如果您在派生类中再次从基类声明一个方法,那么它会在派生类中声明一个新方法,该方法隐藏所有具有相同名称的基类方法。这称为函数隐藏。
好读:
What's the meaning of, Warning: Derived::f(char) hides Base::f(double)?
如果是虚方法,你不需要在子类中再次声明基类方法,你只需要提供一个定义。这称为函数重写。
关于c++ - 正确的头文件语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682368/