Классы C ++ (публичные, приватные и защищенные) - PullRequest
38 голосов
/ 31 января 2011

Как можно объявить классы в C ++ public, private или protected?

Ответы [ 4 ]

42 голосов
/ 31 января 2011

В C ++ нет понятия, что весь класс имеет спецификатор доступа, как в Java или C #.Если фрагмент кода имеет видимость класса, он может ссылаться на имя этого класса и манипулировать им.Тем не менее, есть несколько ограничений на это.Например, если вы можете ссылаться на класс, это не значит, что вы можете создать его экземпляр, поскольку конструктор может быть помечен как закрытый.Точно так же, если класс является вложенным классом, объявленным в закрытом или защищенном разделе другого класса, класс не будет доступен извне этого класса и его друзей.

29 голосов
/ 31 января 2011

Вложив один класс в другой:

class A
{
public:
    class B {};
protected:
    class C {};
private:
    class D {};
};
6 голосов
/ 31 января 2011

Зависит от того, имеете ли вы в виду членов или наследство.Вы не можете иметь 'private class', как таковой.

class Foo
{
public:
Foo() {} //public ctr
protected:
void Baz() //protected function
private:
void Bar() {} //private function
}

Или наследование:

class Foo : public Bar
class Foo : protected Bar
class Foo : private Bar
4 голосов
/ 31 января 2011

Вы можете реализовать "частные классы", просто не публикуя их интерфейс для клиентов.

Я не знаю способа создания "защищенных классов".

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