c – 使用可选参数覆盖虚函数
作者:互联网
为什么这个打印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)方法不与A和C结构的f()方法共享签名.
标签:optional-arguments,c,inheritance,virtual 来源: https://codeday.me/bug/20190901/1781669.html