R Справочное руководство по С++

R.11.6 Доступ к виртуальным функциям.

   


Назад  |  Вперёд

Правила доступа ($$r.11) к виртуальной функции определяются ее описанием и на них не влияют правила доступа к к функции, которая позднее будет подавлять ее. Приведем пример:

           class B {
           public:
             virtual f();
           };

           class D : public B {
           private:
             f();
           };

           void f()
           {
             D d;
             B* pb = &d;
             D* pd = &d;

             pb->f();   // нормально: B::f() общий член
                        // вызывается D::f()
             pd->f();   // ошибка: D::f() частный член
           }

Права доступа проверяются при самом вызове, используя тип выражения, обозначающее объект, для которого вызывается функция-член (в примере выше это B*). Доступ к функции-члену в классе, где она определена (D в примере выше), в общем случае неизвестен.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.