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