C++ 重载、隐藏和重写(或者称为覆盖)
2017-10-25 本文已影响3人
赵者也
1.当函数 foo 在同一个作用域中存在两个或者多个版本(具有不同签名)时,就称 foo 函数被“重载”了;
2.当基类中的一个 virtual 函数在派生类中也存在,并且它们具有相同的签名和返回类型时,就称派生类中的版本“重写”(或“覆盖”)了基类中的版本;
3.派生类中的成员函数,会隐藏基类中与之同名的全部函数。如果出现这种情况,则:
- a. 只有派生类的函数可以被直接调用
- b. 必须要使用类作用域解析运算符“::”显示地调用基类函数。
class A{
pubilc:
A(int a,int b);
...
virtual void display();
virtual QString toString() const;
virtual QString toString(char ch); // 函数重载
...
};
class B: public A{
public:
...
QString toString() const; //重写(覆盖)积累方法并隐藏toString(char)。
void display(int n); //没有重写方法,但是隐藏了全部的A::display()方法。
};