为什么即使将std :: string分配为0或nullptr也会导致直接的运行时异常?

问题描述 投票:0回答:1
std::string s = 0;  // = nullptr ---> throws `std::logic_error`

以上语句会导致分段错误。为什么允许?[至少nullptr的构造函数重载应该是=delete,不是吗?]

c++ c++14 language-lawyer stdstring nullptr
1个回答
0
投票

在那种情况下,由于重载解析的工作方式,所以调用了const char*的构造函数。

并且如果该指针为nullptr,则标准库尝试取消引用具有未定义结果的空指针值。

std::string已经hide肿。我的猜测是,没有人能说服C ++标准委员会拥有std::string(std::nullptr_t)构造函数的优点。

© www.soinside.com 2019 - 2024. All rights reserved.