gpt4 book ai didi

c++ - 用于 C++ 中的初始化的 memset

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

memset 有时用于在构造函数中初始化数据,如下例所示。它一般工作吗?总的来说这是个好主意吗?

class A {
public:
A();
private:
int a;
float f;
char str[35];
long *lp;
};

A::A()
{
memset(this, 0, sizeof(*this));
}

最佳答案

不要使用 memset。它是 C 的保留,不适用于非 POD。具体来说,在包含任何虚函数的派生类(或任何包含非内置函数的类)上使用它会导致灾难。

C++ 为初始化提供了特定的语法:

class A {
public:
A();
private:
int a;
float f;
char str[35];
long *lp;
};

A::A()
: a(0), f(0), str(), lp(NULL)
{
}

说实话,我不确定,但 memset 也可能不是 float 的一个坏主意,因为它们的格式未指定。

关于c++ - 用于 C++ 中的初始化的 memset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481654/

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