diff --git a/CppCoreGuidelines.md b/CppCoreGuidelines.md index eac8399..209dd50 100644 --- a/CppCoreGuidelines.md +++ b/CppCoreGuidelines.md @@ -20294,24 +20294,44 @@ When declaring a class use the following order Use the `public` before `protected` before `private` order. -Private types and functions can be placed with private data. +##### Example -Avoid multiple blocks of declarations of one access (e.g., `public`) dispersed among blocks of declarations with different access (e.g. `private`). + class X { + public: + // interface + protected: + // unchecked function for use by derived class implementations + private: + // implementation details + }; ##### Example +Sometimes, the default order of members conflicts with a desire to separate the public interface from implementation details. +In such cases, private types and functions can be placed with private data. + class X { public: // interface protected: // unchecked function for use by derived class implementations private: - // implementation details + // implementation details (types, functions, and data) }; -##### Note +##### Example, bad + +Avoid multiple blocks of declarations of one access (e.g., `public`) dispersed among blocks of declarations with different access (e.g. `private`). + + class X { // bad + public: + void f(); + public: + int g(); + // ... + }; -The use of macros to declare groups of members often violates any ordering rules. +The use of macros to declare groups of members often leads to violation of any ordering rules. However, macros obscures what is being expressed anyway. ##### Enforcement