C++中的explicit关键字

class WTF {
public:
    explicit WTF(int, float f = 0.1) {}  //explicit只对类型转换构造函数有效
                                         //表明禁止使用这个构造函数进行隐式类型转换
};

void FKU(const WTF&) {

}

int main() {
    int val = 3;
    FKU(val);  //这里会出现编译错误
               //explicit 只对 “只用一个参数就可以调用的构造函数有效(可以是n个参数,但是有n-1个默认参数)” 有效
               //而不是C++ primer中文版里说的 "只对只有一个参数的构造函数有效"
    return 0;
}
explicit只对类型转换构造函数有效, 表明禁止使用这个构造函数进行隐式类型转换

posted on 2016-09-05 20:54  远近闻名的学渣  阅读(127)  评论(0)    收藏  举报

导航