Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类成员,隐式初始化为零?_C++_Initialization_Raii - Fatal编程技术网

C++ 类成员,隐式初始化为零?

C++ 类成员,隐式初始化为零?,c++,initialization,raii,C++,Initialization,Raii,我总是假设我分配的所有原语最初都包含以前包含的地址(垃圾),或者它们包含位的调试模式 然而,我在某个地方无意中读到,构造函数会将构造函数中“它无法到达”的任何成员归零。我希望我记得我在哪里读到的,因为它现在让我很烦恼 我的问题是,是否存在这样一种情况:对象的某些成员在构造时被初始化为零?正如Galik所说,只有对象会被初始化(使用默认构造函数)。有些编译器初始化Primative,但如果您利用此“功能”,您将编写根本不正确的代码。只有拥有自己构造函数的成员才会被初始化。检查这个,它可以回答你的问

我总是假设我分配的所有原语最初都包含以前包含的地址(垃圾),或者它们包含位的调试模式

然而,我在某个地方无意中读到,构造函数会将构造函数中“它无法到达”的任何成员归零。我希望我记得我在哪里读到的,因为它现在让我很烦恼


我的问题是,是否存在这样一种情况:对象的某些成员在构造时被初始化为零?

正如Galik所说,只有对象会被初始化(使用默认构造函数)。有些编译器初始化Primative,但如果您利用此“功能”,您将编写根本不正确的代码。

只有拥有自己构造函数的成员才会被初始化。检查这个,它可以回答你的问题。我不知道“无法到达”是什么意思,但基本数据类型(如INT)不是由构造函数隐式初始化为零的。@NeilKirk-我只能猜测我当时记错了读的内容。我还是找不到,但至少我知道现在不是这样。值得注意的是,当你收到垃圾时,它是你自己的垃圾,而不是别人的。。。这将是一个安全漏洞。在具有虚拟内存的系统中,随着堆和线程堆栈的增长,O/s将分配全部为零的页面。一旦释放堆上的某些内容并重用该内存或堆栈回溯到以前访问过的内存,就会得到自己的垃圾-