C ++ по умолчанию спецификатор доступа к наследованию? - PullRequest
4 голосов
/ 19 октября 2010

У меня есть какой-то устаревший код, который мне нужно обернуть, и я натолкнулся на это объявление:

class Foo : Bar
{
    // ...
};

Кажется, это компилируется в GCC.Я знаю, что это плохо, но я не могу это изменить.Мой вопрос: если не указан спецификатор доступа к наследованию, как компилятор C ++ справляется с этим?

Ответы [ 3 ]

9 голосов
/ 19 октября 2010

Для классов по умолчанию private.

Для структур по умолчанию public.

8 голосов
/ 19 октября 2010

Кстати, это не называется модификатором доступа.Он называется спецификатором доступа

$ 11.2 / 2 - "В отсутствие спецификатора доступа для базового класса, общедоступный предполагается, когда производный класс определен со структурой ключа класса, а закрытыйпредполагается, когда класс определен с помощью класса ключ-класс. "

В вашем контексте 'Bar' является частным базовым классом 'Foo'

1 голос
/ 19 октября 2010

Это private.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...