在C中,我可以依赖于在所有情况下初始化为false的新bool吗?
bool *myBool = new bool(); assert(false == *myBool); // Always the case in a proper C++ implementation?
解决方法
在这种情况下,是的;但原因很微妙.
新bool()中的括号会导致值初始化,将其初始化为false.如果没有它们,新的bool将改为执行默认初始化,从而使其具有未指定的值.
就个人而言,如果可能的话,我宁愿看到新的bool(false),以明确它应该被初始化.
(假设有充分理由使用new;即使有,也应该由智能指针管理 – 但这超出了这个问题的范围).
注意:这回答了我阅读时的问题;在编写完其他答案之后,它已被编辑以改变其含义.