首页 > 解决方案 > 带有 getter/setter 的 memset 和 struct

问题描述

我有一个简单的 pod 结构,例如:

struct T
{
    int x;
    float z;
}

我想将数据设为私有并添加 getter/setter。我可以在那个结构上使用 memset 吗?

memset(obj, 0, sizeof(T)); 

标签: c++

解决方案


我想将数据设为私有并添加 getter/setter。我可以在那个结构上使用 memset 吗?

是的,您可以使用 memset,只要该类可轻松复制,并且该对象不是潜在重叠的子对象。

零字节的 PS Memsetting 浮点数在 C++ 技术上不保证将其设置为零,尽管它可能在大多数系统上都这样做。字节的任何其他值将更没有意义。

PPS 指针也有同样的问题:Null 不能保证所有位都为零。

PPPS 如果您打算将值设置为零,我想不出使用 memset 0 而不是使用值初始化和赋值的充分理由。


推荐阅读