개발/C++

[C++] EBCO란?

재근이 2021. 10. 8. 13:19
반응형

💡EBCO란?

Empty Base Class Optimization의 약어로,

Empty Class로 부터 상속을 받는 경우 Base ClassEmpty Class의 크기는 0 btye최적화 된다는 말이다.

* Empty Class에 대해서 알고 싶은 분은아래 링크에서 확인해주세요.

 

[C++] Empty Class란?

목표 Empty Class 특징에 대해서 알아보고, 어떠한 것들이 Empty Class를 말하는지 예시를 통해서 알아보자. Empty Class 특징 size가 1byte (non-static) member 변수가 없다. 가상 함수가 없다. 가상 상속을 하..

jaegeun.tistory.com

 

📝예시 코드(Example)

아래와 같이 Empty Class를 상속 받은 경우는 0 byte이며, 포함하는 경우 Empty Class의 크기가 1 byte이기 때문에 크기가 늘어난것을 볼 수 있다.(padding으로 인해 1 byte 크기인 Empty Class4 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;
}
반응형