• 练习6.40、6.41


    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,其他的保持不变。

  • 相关阅读:
    自定义指令
    freemarker 数据类型
    hibernate简单的增删改查
    hibernate增删改查
    Hibernate HQL查询语句总结
    Hibernate配置详细解释
    Filter过滤器
    日志统计
    分页-模糊查询
    分页
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9488862.html
Copyright © 2020-2023  润新知