gpt4 book ai didi

c++ - 为什么 nullptr 是核心语言的一部分,而 nullptr_t 是 STL 的一部分?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:26 24 4
gpt4 key购买 nike

据我所知nullptr是核心语言的一部分。

引用 C++11:(18.2/9)

nullptr_t is defined as follows:

namespace std { typedef decltype(nullptr) nullptr_t; }

并在 header 中定义 <cstddef> .

最佳答案

因为它可以。 C++ 标准化过程的一个中心目标是在向语言添加内容时尽可能少地改变核心语言。

nullptr 篡改了 0 的用法来表示空指针和,呃,零。由于显而易见的原因,使用 0 导致问题,f(0) 调用 f(int) 还是 f(int*) ?于是在核心语言中加入了一个全新的字面量:nullptr。它的类型只是 decltype(nullptr) 所以 nullptr_t 被添加为一个快捷方式:

namespace std {
using nullptr_t = decltype(nullptr);
}

关于c++ - 为什么 nullptr 是核心语言的一部分,而 nullptr_t 是 STL 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628496/

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