Здравствуйте, Аноним, Вы писали:
А>Здравствуйте! Объясните, плз, почему функции базового класса не привязываются к виртуальным функциям интерфейса?
| | Скрытый текст |
| | А>class I
А>{
А>public:
А> virtual void f1(void) = 0;
А>};
А>class A
А>{
А>public:
А> void f1(void) { /*...*/ }
А>};
А>class B : public A, public I
А>{
А> //...
А>};
А>main()
А>{
А> B b;
А>}
|
| | |
А>В итоге будет выдана ошибка о том что класс "B" абстрактный т.к. f1 не определена. Но почему? Чисто технически, если бы f1 была определена в "B" а не в "A", то ее код ничем бы не отличался. Так что мешает компилятору ее использовать?
Да, C++ после C# — это как реальность после сна. С пробуждением!