Re: Виртуальные функции и базовый класс
От: Caracrist https://1pwd.org/
Дата: 16.08.12 20:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте! Объясните, плз, почему функции базового класса не привязываются к виртуальным функциям интерфейса?

  Скрытый текст
А>
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", то ее код ничем бы не отличался. Так что мешает компилятору ее использовать?



B * b = new B();
A * a = new A();
A * ab = &b;

a->f1(); // f1 не делает virtual call
ab->f1();// f1 не делает virtual call
~~~~~
~lol~~
~~~ Single Password Solution
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.