0

在 C 中,我们使用memset()函数将数据设置为 0(不仅用于初始化)。

我的数据可以通过另一种方法更改,我想重用它,然后我想在重用之前将其设置为 0

除了 C++ 之外,还有其他方法可以将数据设置为 0memset()吗?

class MYClass : public NameSpace::ParentClass {

    private:
        struct mystruct data

    public:
        void method();
};

void MYClass::method() {
    memset(&data, 0, sizeof(data)); // it's the C way. Are there another way in C++
}
4

3 回答 3

11

在 C++ 中,您将调用对象的构造函数,或原始无构造函数对象的初始化程序。

重新初始化实际上应该很少发生(不要重用变量,创建新变量!它使程序流程更清晰)——但是当你需要它时,你可以重新分配一个新对象:

data = mystruct();
于 2013-04-18T12:34:12.203 回答
3

POD 类型上使用 memset 是可以的,否则必须使用构造函数进行初始化。

于 2013-04-18T12:35:25.500 回答
0

归零的 C++ 方式应如下所示:

struct mystruct
{
    int i;

    void Reset();
}

class MYClass : public NameSpace::ParentClass 
{
private:
    mystruct data

public:
    void method();
};

void mystruct::Reset()
{
    i = 0;
}

void MYClass::method() 
{
    data.Reset();
}
于 2013-04-18T12:49:51.957 回答