函数隐藏和重载之间的区别

Mis*_*aig 5 c++ oop visual-c++

我发现函数隐藏和重载之间没有任何区别.因为函数隐藏是派生类中存在的函数并隐藏了基类的功能.在这两个函数中具有相同的函数名称.重载:在派生类和基类中具有相同的名称但签名不同.

class A {
    void print(int);
};
class B: public A {
    void print(float);
};
Run Code Online (Sandbox Code Playgroud)

它隐藏功能还是过载?

Som*_*ude 8

该函数B::print 隐藏父函数A::print.

如果你想重载,你需要将A::print函数拉入以下范围B:

class B : public A {
public:
    using A::print;  // Pull in (all) A::print symbols into the scope of B

    void print(float);  // Now overloads A::print
};
Run Code Online (Sandbox Code Playgroud)