在C++中,对于一个类中只接受一个实参的构造函数,相当于定义了从实参类型到此类型的隐式转换机制。而将这个构造函数声明为explicit的话,则会禁止这样的隐式转换,这个构造函数将无法被隐式调用,而是只能用来直接初始化。
这样就引出一个问题:如果复制构造函数(接受一个const 本类型& 的实参)被声明为explicit,代表什么意思?是说不允许隐式调用复制构造函数了吗?而用等号来对这类对象进行复制初始化时,等号右边的对象总是要先转换为本类型,之后再隐式调用复制构造函数,如果是这样的话,那是不是意味着我们将无法再进行复制初始化,而是只能用直接初始化的方式直接调用此复制构造函数了呢?
Read More »