std::string s = 0; // = nullptr ---> throws `std::logic_error`
以上语句会导致分段错误。为什么允许?[至少nullptr
的构造函数重载应该是=delete
,不是吗?]
在那种情况下,由于重载解析的工作方式,所以调用了const char*
的构造函数。
并且如果该指针为nullptr
,则标准库尝试取消引用具有未定义结果的空指针值。
std::string
已经hide肿。我的猜测是,没有人能说服C ++标准委员会拥有std::string(std::nullptr_t)
构造函数的优点。