gpt4 book ai didi

c++ - c++中sizeof运算符是如何实现的?

转载 作者:IT老高 更新时间:2023-10-28 23:22:17 32 4
gpt4 key购买 nike

谁能给我指出 C++ 中 sizeof 运算符的实现以及关于它的实现的一些描述。

sizeof 是不能重载的运算符之一。

所以这意味着我们不能改变它的默认行为?

最佳答案

sizeof 在 C++ 中不是真正的运算符。它只是插入一个等于参数大小的常量的特殊语法。 sizeof 不需要或没有任何运行时支持。

编辑:你想知道如何通过定义来确定类/结构的大小吗?这方面的规则是 ABI 的一部分。 ,而编译器只是实现它们。基本上规则包括

  1. 基本类型的大小和对齐定义;
  2. 各种指针的结构、大小和对齐方式;
  3. 在结构中打包字段的规则;
  4. 关于虚拟表相关内容的规则(更深奥)。

但是,ABI 是特定于平台的,并且通常是特定于供应商的,即在 x86 和(例如)IA64 上,下面的 A 的大小会有所不同,因为 IA64 不允许未对齐的数据访问。

struct A
{
char i ;
int j ;
} ;

assert (sizeof (A) == 5) ; // x86, MSVC #pragma pack(1)
assert (sizeof (A) == 8) ; // x86, MSVC default
assert (sizeof (A) == 16) ; // IA64

关于c++ - c++中sizeof运算符是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718896/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com