标签:6.4 bsp ascii码 c++ har 函数 init 应该 其他
6.40:下面的哪个声明是错误的?为什么?
(a)int ff(int a,int b=0,int c=0);
(b)char *init(int ht=24,int wd,char bckgrnd);
Ans:b)的声明是错的。C++规定,要把没有默认实参的形参放到前面,而默认实参的形参写到靠右的位置,并且一个形参如果有默认实参,那么其右侧必须都有默认实参。
6.41:下面的哪个调用是非法的?为什么?哪个调用虽然合法但显然与程序员的初衷不符?为什么?
char *init(int ht , int wd = 80, char bckgrnd = ‘ ‘);
(a)init(); (b)init(24,10); (c)init(14 , ‘ * ‘ );
Ans:a)非法调用。因为函数声明中有一个形参没有默认实参,在调用时应该提供一个实参,而不能全部省略。
b)合法调用。将函数声明形参中的ht初始化为24,wd初始化为10,后面的形参保持不变。
c)合法调用但是不符初衷。由于‘ * ’的十进制ASCII码是42,所以会将函数声明中的ht初始化为14,wd初始化为42,其他的保持不变。
标签:6.4 bsp ascii码 c++ har 函数 init 应该 其他
原文地址:https://www.cnblogs.com/Dark-King/p/9488862.html