콘텐츠로 이동

선언 순서 (Declaration Order)

유사한 선언을 함께 그룹화하여 공개 부분을 더 일찍 배치합니다.

클래스 정의는 일반적으로 public: 섹션으로 시작하고, protected:, private: 섹션이 이어져야 합니다. 비어 있는 섹션은 생략하세요.

각 섹션 내에서 유사한 종류의 선언을 함께 그룹화하고 다음 순서를 선호합니다.

  • 타입 및 타입 별칭( typedef , using , enum , 중첩된 구조체 및 클래스, 프렌드 타입)
  • (선택적으로 구조체에만 해당) 비정적 데이터 멤버
  • 정적 상수
  • 팩토리 함수
  • 생성자와 할당 연산자
  • 소멸자
  • 기타 모든 함수(정적 및 비정적 멤버 함수, 프렌드 함수)
  • 기타 모든 데이터 멤버(정적 및 비정적)

클래스 정의에 큰 메소드 정의를 인라인으로 넣지 마십시오. 일반적으로 사소하거나 성능이 중요하고 매우 짧은 메서드만 인라인으로 정의할 수 있습니다. 자세한 내용은 헤더 파일에 함수 정의를 참조하세요.


이해하기 쉽게 설명하기

핵심: public을 먼저, 비슷한 선언끼리 묶어서

클래스를 읽는 사람은 보통 "이걸 어떻게 쓰지?"가 먼저 궁금합니다. 그래서 공개 인터페이스를 위에 두고, public:protected:private: 순으로 배치합니다. 빈 섹션은 생략하세요.

각 섹션 내 권장 순서

  1. 타입·타입 별칭 (typedef, using, enum, 중첩 struct/class, 프렌드 타입)
  2. (구조체에 한해, 선택적으로) 비정적 데이터 멤버
  3. 정적 상수
  4. 팩토리 함수
  5. 생성자와 할당 연산자
  6. 소멸자
  7. 그 외 모든 함수 (정적·비정적 멤버 함수, 프렌드 함수)
  8. 그 외 모든 데이터 멤버 (정적·비정적)

큰 메서드는 인라인으로 넣지 말 것

클래스 정의 안에 큰 메서드 본문을 인라인으로 넣지 마세요. 사소하거나 성능이 중요하고 아주 짧은 메서드만 인라인으로 둡니다(자세한 내용은 "헤더 파일에서 함수 정의하기" 참조).