码迷,mamicode.com
首页 > 其他好文 > 详细

练习6.40、6.41

时间:2018-08-16 20:04:42      阅读:173      评论:0      收藏:0      [点我收藏+]

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

标签:6.4   bsp   ascii码   c++   har   函数   init   应该   其他   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!