Notice
Recent Posts
Recent Comments
Link
- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_미친감자님
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_박PD
- 사람_경석형
- 사람_nemo
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_낙타한마리
- 사람_redkuma
- 사람_영원의끝
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어벤치마크
- http://puwazaza.com/
- David harvey의 Reading Marx's c…
- 씨네21
- 한겨레_임경선의 이기적인 상담실
- 본격2차대전만화 - 굽시니스트
- 영화_정성일 글모음 페이지
- 영화_영화속이데올로기파악하기
- 음식_생선회
- 죽력고
- 사람_한밀
- 플밍_수까락
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 단상
- 태그가 아깝다
- 삼국지6
- template
- 삼국지
- Programming
- programming challenges
- 노무현
- c++
- 일리아스
- 진중권
- modernc++
- 인문학
- 정신분석
- 게임
- 프로그래밍
- 영화
- 강유원
- 정성일
- 건강
- 진삼국무쌍5
- 소비자고발
- 김두식
- 책
- 고전강의
- 고등학교 사회공부
- 유시민
- BSP
- stl
- 유머
Archives
- Today
- Total
01-07 02:28
lancelot.com
EBCO(Empty Base Class Optimization) 본문
Empty class는 member를 가지지 않지만, Empty class의 sizeof(empty)는 1byte 이다.
그래서 empty class를 member로 가지면, size를 가지게되는데, 대신에 empty class에서 상속을 받으면, 메모리 구조는 같지만 size는 0이 된다.
ex1)
#include<iostream>
class Empty {};
struct Data1
{
Empty e;
int data;
};
struct Data2 : public Empty
{
int data;
};
int main()
{
std::cout << sizeof(Data1) << std::endl;
std::cout << sizeof(Data2) << std::endl;
}
ex2) empty class 와 template partial specialization을 이용.
#include<iostream>
class Empty {};
template<typename T1, typename T2, bool = std::is_empty_v<T1>>
struct PAIR
{
};
template<typename T1, typename T2>
struct PAIR<T1, T2, false>
{
T1 first;
T2 second;
};
template<typename T1, typename T2>
struct PAIR<T1, T2, true> : public T1
{
T2 second;
};
int main()
{
PAIR<int, int> p1;
PAIR<Empty, int> p2;
std::cout << sizeof(p1) << std::endl;
std::cout << sizeof(p2) << std::endl;
}