c – 我可以依赖新的bool初始化为false吗?

在C中,我可以依赖于在所有情况下初始化为false的新bool吗?
bool *myBool = new bool();

assert(false == *myBool);  // Always the case in a proper C++ implementation?

(更新了反映评论代码.)

解决方法

在这种情况下,是的;但原因很微妙.

新bool()中的括号会导致值初始化,将其初始化为false.如果没有它们,新的bool将改为执行认初始化,从而使其具有未指定的值.

就个人而言,如果可能的话,我宁愿看到新的bool(false),以明确它应该被初始化.

(假设有充分理由使用new;即使有,也应该由智能指针管理 – 但这超出了这个问题的范围).

注意:这回答了我阅读时的问题;在编写完其他答案之后,它已被编辑以改变其含义.

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...