Изучаю множественное наследование:
Есть ли (желательно русскоязычные) источники у кого под рукой, как работает механизм виртуального наследования (под капотом )
Внешне то понятно, в любом учебнике есть, но как внутри реализовано - найти не получилось с первой попытки.
т.е. как там в vtbl(?) заносятся отсылки на члены базового класса (именно судя по всему на переменные методы все же будут сдублированны, т.е. D будет содержать 3 метода f() и еще свой ) как там формируются методы.
например немного не понятно, почему если
A { virtual void f(); };
B: virtual public A { void f();};
C: virtual public A { void f();};
D: public B, public C {}; не описать метод B: void f(); - то компилятор скажет типа не знаю какую ф-ю выбрать.
т.е. даже если в D void f() не нужен - нужно сделать его пустое тело.
Но при этом, если мы бы имели не виртуальное наследование то без void f() в D скомилялось бы.