用可选参数重写虚拟函数

Overriding a virtual function with optional arguments

本文关键字:虚拟 函数 重写 参数      更新时间:2023-10-16

为什么要打印23作为输出;我的期望是33。有人能解释一下吗。

struct A {
    virtual void f() {cout << "1";}
};
/* Private inheritance */
struct B : private A {
    void f(int x = 0) {cout << "2";}
};
struct C : B {
    void f(){cout << "3";}
};
int main() {
    C obj;
    B &ref = obj;
    ref.f();
    obj.f();
}

B结构中的f(int x = 0)方法与AC结构的f()方法都不共享签名。