如果POD被封装在一个类中,它会产生同样的效果吗
If a POD is wrapped inside a class, does it give the same effect?
以下是两种不同的解释:
char c; // 1
struct MyChar { char c; }; // 2
如果我做new MyChar[100]
,它会在所有平台中分配100个字节吗?添加非virtual
构造函数/析构函数和/或operator
会对MyChar
的大小产生任何影响?
MyChar
可能在c
之后有未命名的填充字节,所以不,不能保证sizeof(MyChar)
是1
。
在MSVC上,您可以使用:
#pragma pack(1)
struct MyChar
{
char c;
};
// Restore
#pragma pack()
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将可变参数函数的参数封装在类实例中
- 如何在 malloc 内存中初始化非 POD 数据
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 封装C++模板
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- 从封装在对象中的函数 C++ 返回时为空的列表
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- 带有 char[] 字段的 POD 结构的 constexpr 构造
- 当要访问的对象被多次封装时,如何正确使用setter
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 非 POD 的零初始化
- C++定义构造函数使对象成为非 POD
- 是否可以使用 std::array 作为 POD 结构的数据容器?
- 如何在类中封装C/C++套接字发送和接收函数?
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 具有非 POD 对象的 GLib 异步队列
- 如果POD被封装在一个类中,它会产生同样的效果吗