如何解决为什么 C++ 中模板的大小为 1 字节?
使用using
,可以定义类型的别名,并且该类型的单元具有与原始实例(1)相同的大小。然而,模板只有 1 个字节 (2) 的权重。
using aliasOfInt = int;
template<typename T>
struct intWrapper {
using wrappedaliasOfInt = T;
};
int main() {
// (1) --> 4B
std::cout << "sizeof(aliasOfInt) = " << sizeof(aliasOfInt) << std::endl;
// (2) --> 1B
std::cout << "sizeof(intAliasWrapper) = " << sizeof(intWrapper<int>) << std::endl;
}
在(2)中,是否编译了一个真正的类型或者为什么只有1B?
解决方法
模板是一条红鲱鱼。它是一个没有数据成员的结构,与 T
无关。由于 C++ 不允许 sizeof(anything)==0
,因此 sizeof(intWrapper<int>)
必须大于 0。这使得大小 1 成为自然选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。