首页 > 其他 > 详细

练习6.40、6.41

时间:2018-08-16 18:54:55      阅读:197      评论:0      收藏:0      [点我收藏+]

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.40、6.41

原文:https://www.cnblogs.com/Dark-King/p/9488862.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!