zoukankan      html  css  js  c++  java
  • 转换构造函数

    1.概念

    1)只接受一个形参(但这个形参不是自身类型的引用)的构造函数,也可称为转换构造函数,它其实无形中为类定义了隐式转换规则

    需要Sales_data对象的地方,我们可以用string或者istream替代:

    2.阻止转换构造函数的隐式转换

    2.1 使用explicit阻止

    1)explicit 是阻止隐式转换的标识符

    2)explicit只对一个形参的构造函数和类型转换运算符有效,多个形参的构造函数不会发生隐式转换,编译器允许对多个形参的构造函数指定explicit,但是这么做没有意义

    3)所以被explicit了的构造函数只能用于直接初始化,不能用于拷贝初始化,因为拷贝初始化时等号右边可能会发生隐式转换

    4)explicit只能出现在类内,不能出现在类外

    2.4 实例:

    1)接受一个容量大小的参数的vector的构造函数是explicit的

    所以:

    2)接受一个参数const *char(c字符串)的string构造函数不是explict的

    class String{
    public:
        String(const char *str = NULL); // 也是一个转换构造函数
        String(const String &other); // 拷贝构造函数
        ~String(void); // 析构函数
        String & operate = (const String &other); // 赋值函数
    private:
        char *m_data; // 用于保存字符串
    };

    所以string可以这样:

    string null_book="9-999-99999-9"
  • 相关阅读:
    java 导入导出的 命令
    点击 table 单元格 取值
    SQL Server存储过程创建和修改
    js正则匹配过滤 特殊字符
    java 学习框架
    Table 表单样式
    Table 表单
    Table 固定表头的几种方法
    .Net 高效开发之不可错过的实用工具
    sql 批量插入数据到Sqlserver中 效率较高的方法
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9683690.html
Copyright © 2011-2022 走看看