构造函数中的非零默认值

Non-zero default value in constructor

本文关键字:默认值 构造函数      更新时间:2023-10-16

可能重复:
类中未定义/未初始化的默认值

我在C++中有一个类,它经常被创建和销毁。为了调试,我在类中添加了一个bool mDebug,我想用#ifdef打开它。然而,我发现即使没有定义ifdef,也会出现与调试变量相关的消息。当我在构造函数中转储该值时,我发现它有随机值-35、68等。所以我假设存在某种内存泄漏,并且该类被分配了已经在使用的内存。然而,我已经对它运行了purify,它没有显示当时未初始化的内存读取或任何超出范围的写入。valgrind也没有太大帮助。由于各种原因,gdb在这段代码上不能很好地工作。我可以转储变量的地址,但还有其他想法吗?

感谢

我假设添加到类中的"bool mDebug"是而不是静态成员,因为它将(自动)初始化为零。因此,我认为它必须是一个"常规"数据成员。

这意味着您根本没有用"基/成员初始值设定项列表"或在构造函数体中显式地设置其初始值(由于您的成员定义封装在#ifdef中,因此您也可以将这两个列表中的任何一个封装在#ifdef中)。

默认情况下,成员不会设置为零(必须明确设置)。除非真的发生了什么奇怪的事情,否则我怀疑这是内存泄漏/错误。