C++转换构造函数和隐式转换函数

换构造函数(conversion constructor function) 的作用是将一个其他类型的数据转换成一个类的对象。
当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。
转换构造函数是对构造函数的重载。

参考链接1
参考链接2

struct RecallTerm {
    RecallTerm(std::string t) {
        term = t;
    }
    std::string term;
};

string c = ":";
RecallTerm aa = c;

用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。
如果不想让转换构造函数生效,也就是拒绝其它类型通过转换构造函数转换为本类型,可以在转换构造函数前面加上explicit!例如:

struct RecallTerm {
    explicit RecallTerm(std::string t) {
        term = t;
    }
    std::string term;
};

string c = ":";
// 下面会报错
//RecallTerm aa = c;












种一棵树最好的时间是十年前,其次是现在。
原文地址:https://www.cnblogs.com/islch/p/15642699.html