练习 6.41 下面的哪个调用是非法的?为什么?哪个调用虽然合法但显然与程序员的初衷不符?为什么?
char *init(int ht, int wd = 80, char bckgrnd = ' ');
(a) init();
(b) init(24,10);
(c) init(14,'*');
- a) 非法,第一个参数没有默认值,调用也未传入值。
- b) 合法。
- c) 合法,参数的类型是
int
而调用者传入char
,显然与调用者的初衷不符。
练习 6.42 给make_plural函数的第二个形参赋予默认实参’s’, 利用新版本的函数输出单词success和failure的单数和复数形式。
#include<iostream>
#include<string>
using namespace std;
string make_plural(size_t ctr, const string &word, const string &ending = "s") {
return (ctr > 1) ? word + ending : word;
}