C++ sizeof包装类

Tho*_*ing 9 c++ class sizeof

假设我有一个不从任何东西继承的类A,没有虚方法,并且只有一个类型为T的变量.C++是否保证sizeof(A) == sizeof(T)

编辑:

如果T是复合类型,它会有所作为吗?

Nav*_*een 7

不,这可能不仅仅是sizeof(T)因为填充.

  • @Lindydancer:我讨厌"在现实世界中"的引用.这没有道理.如果按照"当前"的实际情况进行编程,而不是按"标准"进行编程,那么您的代码就会被破坏.通常因为你的"真实世界"通常非常有限而没有考虑到未来的研究,最终会导致灾难性的失败,当你将代码移植到新的架构/编译器时,你的假设不再适用,这几乎是无法调试的. (4认同)
  • @SLaks,个别变量没有得到填充,只有包含结构(或堆栈空间).确保`sizeof(A.var)== sizeof(T)`总是如此. (3认同)
  • 任何导致"A"受益于填充的优化都同样适用于"T",所以这个假设的编译器几乎肯定会这样做,导致`sizeof(T)== sizeof(A)`.我认为RTTI是一个更加"合理"的原因,看似随意的大小增加.如果编译器将某种类型的类型信息粘贴到某些/所有非多态类型上以优化多态情况,那么事情可能会变得奇怪. (2认同)