gpt4 book ai didi

c++ - 为什么 `std::string str(nullptr)` 和 `std::string str=nullptr` 是错误的?有人可以详细解释原因吗?

转载 作者:行者123 更新时间:2023-12-03 11:14:57 24 4
gpt4 key购买 nike

为什么std::string str(nullptr)std::string str=nullptr是错的?有人可以详细解释原因吗?

最佳答案

这样的例子编译是因为存在一个 std::string(const char*)用于接受以空字符结尾的字符串的构造函数,这是在 C 中存储字符串的标准版本。此外,数组急切地衰减为指针,以允许诸如 std::string("Ahoj") 之类的代码。编译。
这是错误的,因为构造函数需要一个有效的以空字符结尾的字符串,尽管示例可以编译,但它的行为是未定义的。
同样std::string str(0);将起作用并且也未定义,因为文字零可以隐式转换为指针,因为它被用作 nullptr 的 C++11 之前版本| - NULL .
编辑:
我最初声明 std::logic_error将被抛出,@François Andrieux 纠正了我。

关于c++ - 为什么 `std::string str(nullptr)` 和 `std::string str=nullptr` 是错误的?有人可以详细解释原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65394322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com