Переопределение виртуальной функции с необязательными аргументами

Почему эта печать 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();
}

3

Решение

f(int x = 0) метод в B структура не разделяет подпись ни с A ни C структура-х f() методы.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]