相关疑难解决方法(0)

将对象初始化为全零

通常,数据结构的有效初始化是将所有成员设置为零.即使使用C++进行编程,也可能需要与外部API进行交互.

以下是否有任何实际区别:

some_struct s;
memset(&s, 0, sizeof(s));
Run Code Online (Sandbox Code Playgroud)

简单地说

some_struct s = { 0 };
Run Code Online (Sandbox Code Playgroud)

人们发现自己都使用这两种方法,选择哪种方法更适合给定的应用程序?(希望据了解,这只适用于POD结构;如果该结构中存在C++ std :: string,则会遇到各种各样的破坏.)

对于我自己来说,作为一个不使用memset的C++程序员,我从不确定函数签名,所以我发现第二个例子更容易使用,除了更少打字,更紧凑,甚至更多很明显,因为它在声明中说"这个对象被初始化为零"而不是等待下一行代码并且看到"哦,这个对象初始化为零".

在C++中创建类和结构时,我倾向于使用初始化列表; 我很好奇人们对上面两个"C风格"初始化的想法,而不是与C++中可用的内容进行比较,因为我怀疑我们很多人都与C库接口,即使我们自己主要用C++编写代码.

编辑: Neil Butterworth 在后续提出这个问题,我认为这是这个问题的一个有趣的推论.

c c++ struct

18
推荐指数
4
解决办法
8503
查看次数

标签 统计

c ×1

c++ ×1

struct ×1