C++ Primer(第5版) 练习 6.41
练习 6.41 下面的哪个调用是非法的?为什么?哪个调用虽然合法但显然与程序员的初衷不符?为什么?
char *init(int ht, int wd = 80, char bckgrnd = ' ');
(a) init(); (b) init(24, 10); (c) init(14, '*');
环境:Linux Ubuntu(云服务器)
工具:vim
解释
char *init(int ht, int wd = 80, char bckgrnd = ' ');
(a) //非法,函数第一个参数没有默认值,必须要实参传递。init();
(b) //合法,函数的前两个形参是用实参值,最后一个使用默认值。init(24, 10);
(c) //合法,但初衷不符,第二个实参转换为int型,但实际意图是第二个实参要传递给第三个形参。init(14, '*');