zoukankan      html  css  js  c++  java
  • 练习6.52、6.53

    6.52:已知有如下声明,

      void manip(int , int);

      double dobj ;

    请指出下列调用中每个类型转换的等级(参见6.6.1节,第219页)。

    (a)manip( ' a ' , ' z ');  (b)manip(55.4 , dobj)

    Ans:a)实参是char类型,而函数形参是int类型,所以类型转换的等级是类型提升实现的匹配。

       b)实参是两个double类型的值,函数形参是int类型,所以类型转换的等级是算术类型转换实现的匹配。

    6.53:说明下列每组声明中的第二条语句会产生什么影响,并指出哪些不合法(如果有的话)。

    (a)int calc (int & ,int &);

        int calc (const int & ,const int &);

    (b)int calc(char * ,char *);

        int calc(const char * ,const char *);

    (c)int calc(char *, char*);

        int calc(char *const,char *const);

    Ans:a)第二条语句会与第一条语句构成重载函数,若实参是常量,则其会调用第二条语句,因为若形参是常量指针或者引用,那么取决于实参是否是常量而选择调用哪个函数,况且实参传递到形参的对象,会忽略掉顶层const。

       b)第二条语句会与第一条语句构成重载函数,与(a)一样。

       c)声明不合法。重复声明了,两条语句不能构成重载函数,实参传递到形参的对象,会忽略掉顶层const,实际上两个函数声明其实一样,在调用时会进行精确匹配:向实参添加顶层const或者删掉顶层const都属于精确匹配

  • 相关阅读:
    端模板引擎
    Orcale Function Sequence
    OData 集成
    validate[.unobtrusive]和Bootstrap实现tooltip错误提示
    Django
    Web Api 控制器
    HelloWorld和数据绑定
    动态Web Api层
    用户管理
    Docker
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9494710.html
Copyright © 2011-2022 走看看