我可以在派生类中使用相同数量和类型的params定义相同的函数吗?

时间:2016-06-07 05:06:13

标签: c++ c++11 c++14

这样做是否合法(这只是头文件,而.cpp文件包含函数定义):

class Human
{
protected:
    std::string     m_name;
    int             m_age;

public:
    Human();
    void printName() const;
    void printAge() const;
};

在派生类中重新定义相同的void printName() const;(不是virtual)。

class Student : public Human
{
public:
    Student();
    void printName() const;
    void study() const;
};
这是什么?这不是压倒一切。但它也不会超载,对吗?至于重载应该有不同类型或数量的参数(方法在两个地方都是常量)。我在这做了什么?

1 个答案:

答案 0 :(得分:0)

简单回答:是的。

更复杂的答案:是的,有一个标题:

Student s{};
s.printName();  // Will call Student::printName() const
Human &h = s;
h.printName();  // Will call Human::printName() const on same object

由于这些方法不是虚拟的,编译器将根据编译器在调用时看到的类型调用该方法。

printName()中的Student方法是一种覆盖。但它不是虚拟覆盖