C++ 不重载 time 函数所以我们不需要写 NULL 有什么原因吗?

NoS*_*tAl 5 c++ std

这不是我懒得写

auto t = time(nullptr);
Run Code Online (Sandbox Code Playgroud)

而不是假设

auto t = time();
Run Code Online (Sandbox Code Playgroud)

我最感兴趣的是如果这是可能的,如果是(AFAIK它很容易实现,因为C++支持函数重载)为什么它没有完成。

我知道明显的答案,例如:使用<chrono>,没有人写过提案,但我想知道是否有不同的原因。

我最好的猜测是没有人想弄乱 C 库函数。

PS我知道有些人可能想关闭这个问题过于模糊,但我觉得可以对这个问题给出相对客观的答案。

Die*_*ühl 5

简单的答案是它time(time_t)由 C 而不是 C++“拥有”:标准 C++ 委员会不会干涉 C 库,除非有必要的理由。使用 C++,您应该使用<chrono>函数获得更好的界面。

另外:我认为没有建议重载此功能。如果没有提案,什么都不会发生,我怀疑是否有人足够渴望编写这样的提案并通过流程。

  • 另外,时间和 std::time 之间的差异会导致许多菜鸟在 Stack Overflow 上发表令人困惑的帖子,这些菜鸟使用名称空间 std 进行编写,将其作为代码中的第一件事。所以我反对这样的提议。 (2认同)