explicit关键字
今天在看std::thread的时候,发现他的构造函数是这样的:
explicit thread(Fn&& fn, Args&&... args);
explicit这个关键字很眼熟,因为在Qt中默认的构造函数也是用的这个关键字:
explicit Camera(QObject *parent = nullptr);
秉着消灭知识盲点的态度,在这记录一下explicit关键字的用法。
作用:
指定构造函数或转换函数 (C++11起)为显式 (explicit), 即它不能用于隐式转换和复制初始化。
explicit 的反义词是 implicit ,类默认的构造函数就是隐式构造函数 (implicit)。
explicit 只能修饰含有一个参数的构造函数,或除第一个参数外其余参数都有默认值的构造函数。
代码及分析: