Pimpl 컴파일 타임 캡슐화 (현대 C++)

Pimpl 건드릴 숨기기 구현 결합을 최소화 하 고 인터페이스를 구분 하는 최신 c + + 기술입니다.Pimpl 줄임말이 "포인터 구현 합니다."입니다. 이미 개념에 익숙할 수 있지만 건드릴 명칭 또는 방화벽 컴파일러와 같은 다른 이름으로 알고 있는.

Pimpl 사용 하는 이유

Pimpl 건드릴 소프트웨어 개발 수명 주기를 개선할 수 있는 방법을 다음과 같습니다.

  • 컴파일 종속성을 최소화 합니다.

  • 인터페이스와 구현을 분리입니다.

  • 이식성입니다.

Pimpl 헤더

// my_class.h
class my_class {
   //  ... all public and protected stuff goes here ...
private:
   class impl; unique_ptr<impl> pimpl; // opaque type here
};

Pimpl 건드릴 다시 따라 변경 되 고 불안정 해 개체 레이아웃을 피할 수 있습니다.(타 동적으로) 널리 사용 되는 형식에 적합 합니다.

Pimpl 구현

정의 impl 클래스의.cpp 파일에.

// my_class.cpp
class my_class::impl {  // defined privately here
  // ... all private data and functions: all of these
  //     can now change without recompiling callers ...
};
my_class::my_class(): pimpl( new impl )
{
  // ... set impl values ... 
}

모범 사례

도끼 비 스왑 특수화에 대 한 지원을 추가할지 여부를 고려해 야 합니다.

참고 항목

기타 리소스

C + + (현대 C++)를 다시 시작

C + + 언어 참조

표준 C++ 라이브러리 참조