Итак, вот пример кода. Задача заключалась в том, чтобы выдать результат, который будет распечатывать этот код. Это 2 разные функции? Что тогда происходит с vtable в классе B? Он просто хранит 2 указателя на 2 разные функции с одинаковым именем?
#include<iostream>
#include <vector>
using namespace std;
class A
{
public:
A()
{
init();
}
virtual void init(bool a = true)
{
if(a)
cout << "A" << endl;
}
};
class B :public A
{
public:
virtual void init()
{
cout << "B" << endl;
}
};
int main()
{
B b;
A* a = &b;
a->init();
a->init(true);
system("pause");
}
Не могу найти, где прочитать об этом деле. Не могли бы вы, товарищи, объяснить или дать ссылку на какой-нибудь источник, если вы видели этот случай?
<stdin>:21:18: warning: 'B::init' hides overloaded virtual function [-Woverloaded-virtual] virtual void init() ^ <stdin>:12:18: note: hidden overloaded virtual function 'A::init' declared here: different number of parameters (1 vs 0) virtual void init(bool a = true)
- person Paul R   schedule 13.11.2018override
. - person molbdnilo   schedule 13.11.2018system("pause");
, если хотите, чтобы окно оставалось открытым. Вместо этого используйте «Начать без отладки» (Ctrl + F5). - person harper   schedule 13.11.2018-Woverloaded-virtual
, который вы указали в предупреждающем сообщении clang. - person Pates   schedule 13.11.2018