使用可选参数覆盖虚函数

时间:2013-02-18 06:06:11

标签: c++ inheritance virtual optional-arguments

为什么打印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();
}

1 个答案:

答案 0 :(得分:5)

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