C++/Class
2021. 3. 20. 17:19
상속과 패딩
일반적인 구조체와 마찬가지로 패딩이 끼게 된다.
패딩이 없는 예제 (
int
,float
)#include <iostream> class Mother { int i_; public: Mother(const int & i_in = 0) : i_(i_in) { std::cout << "Mother construction\n"; } }; class Child : public Mother { float d_; public: Child() : d_(1.0), Mother(1024) { std::cout << "Child construction\n"; } }; int main() { using namespace std; cout << sizeof(Mother) << endl; cout << sizeof(Child) << endl; } /* stdout 4 8 */
4바이트 패딩 예제 (
int
,double
)#include <iostream> class Mother { int i_; public: Mother(const int & i_in = 0) : i_(i_in) { std::cout << "Mother construction\n"; } }; class Child : public Mother { double d_; public: Child() : d_(1.0), Mother(1024) { std::cout << "Child construction\n"; } }; int main() { using namespace std; cout << sizeof(Mother) << endl; cout << sizeof(Child) << endl; } /* stdout 4 16 */
끝에 패딩이 4바이트 더 붙은 예제 (
int
,double
,int
)#include <iostream> class Mother { int i_; public: Mother(const int & i_in = 0) : i_(i_in) { std::cout << "Mother construction\n"; } }; class Child : public Mother { double d_; int tmp_; public: Child() : d_(1.0), Mother(1024) { std::cout << "Child construction\n"; } }; int main() { using namespace std; cout << sizeof(Mother) << endl; cout << sizeof(Child) << endl; } /* stdout 4 24 */
'C++ > Class' 카테고리의 다른 글
C++ 함수 오버라이딩 (0) | 2021.03.20 |
---|---|
C++ 상속과 접근 지정자 (0) | 2021.03.20 |
C++ 유도된 클래스들의 소멸 순서 (0) | 2021.03.19 |
C++ 유도된 클래스들의 생성 순서 (0) | 2021.03.19 |
C++ 상속 Teacher-Student 예제 (0) | 2021.03.19 |