일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- C++ gui 라이브러리
- BOJ
- Nebula
- LOB
- C++
- 공룡책
- JUCE
- a tour of go
- C++ gui
- JUCE 튜토리얼
- OS
- JUCE라이브러리
- 운영체제
- 알고리즘
- 리듬게임
- c++ heap
- Docker
- go
- 백준
- vim-go
- tour of go
- JUCE library
- 프로그래밍
- 연결리스트
- go channel
- gui
- 코딩
- C언어
- 자료구조
- C++ library
Archives
- Today
- Total
CafeM0ca
[C++] pimpl(pointer to implementation) 본문
반응형
pimpl은 매번 인터페이스와 구현 클래스를 만든다.
구현 클래스는 원래 만들던 방식의 클래스랑 같다.
인터페이스 클래스는 구현 클래스의 public 메서드만 담는다.
인터페이스 클래스의 메서드들은 단순히 구현 클래스의 메서드 호출을 중계하는 역할을 한다.
인터페이스 클래스는 단 하나의 데이터 멤버로 구현 클래스의 포인터를 가진다.
이렇게 클래스를 분리하면 구현 클래스가 어떻게 바뀌든 public 인터페이스 클래스에는 변화가 없으므로 컴파일을 다시 해야 할 필요를 줄일 수 있다.
즉, 구현 부분이 어떻게 바뀌든 인터페이스만 그대로라면 사용자로서는 컴파일을 다시 할 필요가 없다.
컴파일 종속성의 배제는 구현 클래스의 객체를 인터페이스 클래스가 포인터로 가질 때만 유효하다.
이러한 테크닉은 인터페이스와 구현을 완전히 분리해주기 때문에 매우 강력하다.
이러한 방식이 프로그래머들 사이에서 아주 일반적인 것은 아니다.
도입할때 설득하는 방법으로는 컴파일 시간의 단축의 장점이 있다.
큰 프로젝트일수록 전체 빌드는 모든 프로그래머에게 부담된다.(협업할때나 혼자할때나)
이 테크닉을 도입하면 컴파일 시간을 단축할 수 있다.
pre-compiled header를 사용하면 기본 빌드 시간을 단축할 수 있다.
- professional c++ 3th edtion
반응형
'Programming > C++' 카테고리의 다른 글
[C++] rvalue reference(우측값) (0) | 2018.07.09 |
---|---|
[C++]상속 (virtual, override, static) (0) | 2018.06.30 |
[C++] dangling pointer (0) | 2018.06.30 |
[C++] 클래스에서 default와 delete (0) | 2018.06.30 |
[C++] this 포인터 (0) | 2018.06.30 |
Comments