반응형
💡EBCO란?
Empty Base Class Optimization의 약어로,
Empty Class로 부터 상속을 받는 경우 Base Class인 Empty Class의 크기는 0 btye로 최적화 된다는 말이다.
* Empty Class에 대해서 알고 싶은 분은아래 링크에서 확인해주세요.
📝예시 코드(Example)
아래와 같이 Empty Class를 상속 받은 경우는 0 byte이며, 포함하는 경우 Empty Class의 크기가 1 byte이기 때문에 크기가 늘어난것을 볼 수 있다.(padding으로 인해 1 byte 크기인 Empty Class는 4 byte의 공간을 차지한다.)
class Empty {};
class Class1 { //Empty를 포함하는 Class
Empty e;
int data;
};
class Class2 : public Empty { //Empty를 상속받는 Class
int data;
};
int main() {
std::cout << sizeof(Class1) << std::endl; // 8
std::cout << sizeof(Class2) << std::endl; // 4
return 0;
}
반응형
'개발 > C++' 카테고리의 다른 글
[C++] "[[no_unique_address]]" 란? C++20 attribute (0) | 2021.10.08 |
---|---|
[C++]Tag Dispatching(꼬리표 분배)이란?-Empty Class 이용한 예(example) (0) | 2021.10.08 |
[C++] Empty Class란? (0) | 2021.10.08 |