EBO, empty base optimization, 即空白基类最优化, 可以使派生类节省空间;
但是如果使用复合(composition)的方式, 因为定义了新对象, 所以编译器会进行填充(padding), 填充进一个int, 4位的空间;
代码:
/************************************************* File: test.cpp Copyright: C.L.Wang Author: C.L.Wang Date: 2014-04-11 Description: test Email: morndragon@126.com **************************************************/ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> using namespace std; class Empty {}; class HoldsAnInt { private: int x; Empty e; }; class HoldsAnIntP : private Empty { private: int x; }; int main () { std::cout << "Int : " << sizeof(int) << std::endl; std::cout << "HoldsAnInt(class) : " << sizeof(HoldsAnInt) << std::endl; std::cout << "HoldsAnIntP(inheritance) : " << sizeof(HoldsAnIntP) << std::endl; return 0; }
输出:
Int : 4 HoldsAnInt(class) : 8 HoldsAnIntP(inheritance) : 4
作者:csdn博客 Spike_King
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, class
, private
, 空白
, optimization
Empty
sas base 70题详解、baseadapter详解、cloudbase init详解、sas base 123题详解、sas base 123 详解,以便于您获取更多的相关知识。
时间: 2024-09-20 10:16:01