gpt4 book ai didi

c++ - 这个 C++ 结构初始化技巧安全吗?

转载 作者:IT老高 更新时间:2023-10-28 12:39:54 32 4
gpt4 key购买 nike

不必记住初始化一个简单的“C”结构,我可以从它派生并在构造函数中将其归零,如下所示:

struct MY_STRUCT
{
int n1;
int n2;
};

class CMyStruct : public MY_STRUCT
{
public:
CMyStruct()
{
memset(this, 0, sizeof(MY_STRUCT));
}
};

这个技巧通常用于初始化 Win32 结构,有时可以设置无处不在的 cbSize 成员。

现在,只要没有用于 memset 调用销毁的虚函数表,这是一种安全的做法吗?

最佳答案

您可以简单地对基进行值初始化,它的所有成员都将被清零。这是有保证的

struct MY_STRUCT
{
int n1;
int n2;
};

class CMyStruct : public MY_STRUCT
{
public:
CMyStruct():MY_STRUCT() { }
};

为此,基类中不应有用户声明的构造函数,就像在您的示例中一样。

没有讨厌的 memset 。不能保证 memset 在您的代码中工作,即使它应该在实践中工作。

关于c++ - 这个 C++ 结构初始化技巧安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/112085/

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