c++ - 一个对象什么时候可以有一个但不是两个非零大小,一个或多个字节的存储空间?

标签 c++ language-lawyer

C++ 14 intro.cpp 状态:

a most derived object shall have a non-zero size and shall occupy one or more bytes of storage

为什么要声明

non-zero size

one or more bytes of storage

什么时候可以有一个没有另一个?

最佳答案

这两个部分实际上在说不同的事情。

a most derived object shall have a non-zero size

这意味着使用对象的 sizeof 将返回一个非零大小。

a most derived object ... shall occupy one or more bytes of storage

这意味着该对象占用了一些字节(一个或多个)的内存。

如果第二条语句不存在,则可能意味着 sizeof 将报告非零大小,但该对象实际上可能不使用任何内存。

如果没有第一条语句,它可能意味着 sizeof 可以返回零,但该对象仍会占用内存空间。

两者都是必需的,并且彼此正交。

关于c++ - 一个对象什么时候可以有一个但不是两个非零大小,一个或多个字节的存储空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45125717/

相关文章:

c++ - std::generate - 如何使用随机数生成器?

类似于 C# 的 C++ 库?

c++ - 在析构函数中使用 `friend` 说明符的示例?

c++ - I(I()) 的含义

python - 如何使用 tensorflow 在 C++ 中训练模型?

Linux 中的 C++ OpenCV2 cv::Mat::copyTo 错误

c++ - 如何使用 PJSIP 库解码 SIP 字节流?

c++ - 丢弃一个值会导致读取它吗?

c++ - 什么是模板上下文中的成员枚举?

c++ - 是否允许类型相同但大小不同的双关数组?