zoukankan      html  css  js  c++  java
  • 显示与隐式类型转换

    1.explicit

       通常,除非有明显的理由想要定义隐式转换,否则,单形参构造函数应该为explicit。

       将构造函数设置为explicit可以避免错误,并且当转换有用时,用户可以显式的构造对象。

    string null_book = "9_999_99999_9"
    item.same_isbn(sales_item(null_book));

    2.隐式类型转换

       可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。

    class sales_item{
    public:
    sales_item(const是他的::string &book = " "):isbn(book),units_sold(0),revenue(0,0){}
    sales_item(std::istream &is);
    };

    这里的每个构造函数都定义了一个隐式转换。因此咋i期待一个sales_item类型对象的地方,可以使用一个string或一个istream:

    string null_book = ”99_999_9999_9"
    item.same_isbn(null_book);

    这段程序使用了一个string类型对象作为实参传给sales_item的same_isbn函数。该函数期待一个salex——item对象作为实参。编译器使用接受一个string的sales_item构造函数从null_book生成一个新的sales_item对象。新生成的(临时的)sales_item被传递给same_isbn.

    为转换而显示地使用构造函数

    string null_book = "9_99"

    item.same_isbn(sales_item(null_book));

  • 相关阅读:
    Vmware虚拟机的单用户模式
    Xshell密钥认证
    PuTTY密钥认证
    CentOS 7在NAT模式下配置静态IP
    使用OllyDbg破解EasyCrackMe
    2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
    2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
    Kafka常用命令
    选择器和层叠
    语义化
  • 原文地址:https://www.cnblogs.com/youhao1999/p/14455740.html
Copyright © 2011-2022 走看看