http://blog.naver.com/kkss2013/60108816896
gpg study를 돌아다니다가 우연히 보게 된 기법..
클래스의 헤더에 변수는 내부에서만 사용하는 변수가 많은데
그것들을 외부로 보여지지 않게 하는 기법이 있어서 잠깐 구현방법을 확인해봤습니다.
우선 장점을 보면
: 클래스의 내부 변수를 외부에서 접근 및 확인 하기 어렵다.
: 내부 변수를 추가할때 헤더 파일에 추가하지 않아도 된다.(다른 헤더를 빌드할 필요가 없다!!)
단점은
: 내부변수를 new로 생성해야 하기 때문에 속도상의 문제가 조금있지 않을까 싶기도 하네요 ..
: 인라인 함수를 만들 수 없다는점도 .....
구현방법을 간단히 보면
// 헤더 파일
#pragma once
class CPimpl
{
public:
CPimpl(void);
~CPimpl(void);
protected:
struct XImpl; // 맴버변수의 구조체 전방선언
XImpl* pimpl_; // 맴버변수의 포인터
public:
int GetType();
};
// cpp 파일
#include "Pimpl.h"
// 맴버 변수는 여기에 추가 합니다.
struct CPimpl::XImpl
{
int m_nType;
// 초기화 코드 추가
XImpl()
{
m_nType = 0;
}
};
CPimpl::CPimpl(void)
{
pimpl_ = new XImpl;
}
CPimpl::~CPimpl(void)
{
delete pimpl_;
}
int CPimpl::GetType()
{
pimpl_->m_nType = 10;
return pimpl_->m_nType;
}
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
가상 메모리 할당 함수(VirtualAlloc), 예약, 확정, 보호속성, 대용량 메모리 할당 (0) | 2013.05.24 |
---|---|
operator new 와 메모리 지정 new(placement new) (0) | 2013.05.19 |
placement new , 생성자를 원하는 시점에 호출하기 (0) | 2013.05.19 |
POD(S) - Plain Old Data Structures (0) | 2013.05.19 |
ANSI ,와이드, 멀티바이트 문자 셋용 함수 (0) | 2013.05.14 |