标题:
很好奇,STL 里面的 那么多 XXX::value,会不会增加对象大小?
[打印本页]
作者:
admin
时间:
2018-7-3 08:07
标题:
很好奇,STL 里面的 那么多 XXX::value,会不会增加对象大小?
在 STL 的很多模板中,都用到了 ::value, 很好奇,这些为模板匹配服务的标志,会不会增加对象的大小,测试一下,最常见的
class C : std::true_type
{
}
size_t base = sizeof true_type; // true_type 为1
size_t derived = sizeof C ;// C大小为1
实际上 std::true_type,是一个空对象, 其简化的定义如下:
struct true_type
{
static const bool value=true; // 是一个静态常量,不占对象任何内存
}
但空对象,为什么会有一个字节? 因为c++ 规定,每个类对象,必须至少一个字节用来占位,为什么?让大师来回答你:
http://www.stroustrup.com/bs_faq2.html#sizeof-empty
因此,C报1字节,它也是一个空对象,一个类本身为空,基类为空,但经优化,类仍然为1字节,而不是2字节。
欢迎光临 杰表技术论坛 (http://bbs.jatools.com/)
Powered by Discuz! 6.1.0