c++ - 正确的头文件语法

标签 c++ inheritance

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

例如,假设我有以下类(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/

相关文章:

C# 向 COM 公开 - 接口(interface)继承

java拷贝构造函数和继承

C++ 继承和赋值运算符

c# - 如何在继承链的中间插入类?

c++ - 受 'bad' 指令影响的变量

c++ - SDL_Window 被意外调整大小

c++ - 此文件需要 C++11 库支持

c++ - 如何为所有类型的整数值类型创建全局类型并在 C++ 中了解它们的类型

javascript - Angular 允许在构造函数中继承服务声明

C++ 错误 : ISO C++ Forbids Comparison Between Pointer and Integer [-fpermissive]