Функция-член класса, объявленная вне publi c, защищенная и закрытая - PullRequest
1 голос
/ 18 апреля 2020

Я наткнулся на некоторый код, который выглядел так:

class SomeClass {
   void SomeFunction();

public:
   ~~ public members
}

Не было ни частных, ни защищенных членов класса.

Мой вопрос; не маркирует, какая часть класса SomeFunction относится к плохому программированию? Или определение функции таким способом неявно присваивает ее какой-либо части класса, то есть частной или защищенной, поскольку она не является частью publi c членов?

1 Ответ

4 голосов
/ 18 апреля 2020

В C ++ разница между class и struct заключается в том, что для struct все неявно public, а для class все неявно private.

Как только поскольку вы явно используете public:, private: или protected:, поведение в обоих случаях одинаково для следующих членов.

Это верно и в отношении наследования.
struct A : B является публичной c наследование.
class A : B является частным наследованием.

В вашем примере SomeFunction() входит в неявную часть class, поэтому он считается private.

Очень уважаемый эксперт C ++ считает такую ​​декларацию (неявно private) хорошей практикой.
(https://howardhinnant.github.io/classdecl.html)

...