由于允许哪个版本的C++是默认参数?

pow*_*ete 11 c++ c++11

例:

void foo(int a,int b=12) {
...
}
Run Code Online (Sandbox Code Playgroud)

既然哪个版本的C++合法呢?它是在C++ 11中引入的吗?

Lig*_*ica 15

Per Bjarne的"C++历史"(参见第6页),在C++的第一个版本的第一个版本中添加了默认参数,C With Classes,其"spec"(如果你可以称之为)发布回1980年.

它们一直存在于1998年的初始标准化中,并一直存在至今.

换句话说,自从时间开始以来,每个版本的C++都支持默认参数.

换句话说:字面上永远.:)


Bau*_*gen 13

这在C++的所有标准化版本中都是合法的,从C++ 98开始.

  • @AdrianTam在标准化之前,代码"合法"的概念有点可疑,因为它通常用作符合标准的代码的简写. (13认同)
  • AFAIK,即使在第一个C ++标准之前,它也应该合法。 (2认同)

小智 5

我在1991年开始使用C++,然后在Borland C++ v3.0以及Stanley Lippman的书C++ Primer 2nd ed(也是1991)中出现了默认参数.我认为这有资格作为"合法" - 或者它当时做到了!