c++入门第5章关于函数参数

C++primer 5th about func parameter

本文关键字:函数 参数 于函数 门第 5章 c++      更新时间:2023-10-16

它的问题是"给make_复数的第二个形参(第6.3.2节)一个默认实参's'。通过打印单词success和failure的单数和复数版本来测试你的程序。这是make_复数

string make_plural(size_t ctr, const string& word, const string& ending )
{
    return (ctr > 1) ? word + ending : word;
}

这是否意味着改变'ending',但ending是第三个参数,不是吗?这个问题让我很担心!的问候!

一定是打错了。

查看代码:

string make_plural(size_t ctr, const string& word, const string& ending )
{
    return (ctr > 1) ? word + ending : word;
}

最合理的事情是将"s"作为ending的默认值,因为这是默认复数的方式(并不总是,但使用"bee"->"bees",例如它有效)。

一个更强的参数是,在c++中,如果(n+1)第n个参数没有默认参数,则不可能(除非你找到一个神奇的变通方法(*))为第n个参数提供默认参数:

foo(int first = 0,int second) // not possible !!

在这个例子中,可能不太清楚为什么不允许这样做,但是考虑使用多个默认值。假设你要写:

foo(int first = 0,int second,int third = 0); // actually still not allowed

那么就没有办法知道是否

foo(1,2);

应该调用

foo(0,1,2); 

foo(1,2,0);

为了解决这种歧义,必须发明一些规则,对于c++来说,规则是必须从右到左提供默认参数。

(*)如果您可以更改函数并愿意编写一些额外的代码,则解决方法相当简单。您只需要将所有参数封装在一个结构体中,该结构体提供以您喜欢的默认值组合创建参数。