explicit 关键字

Posted Young_For_You

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了explicit 关键字相关的知识,希望对你有一定的参考价值。

C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?

如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:

 

 

 

上面的操作即是所谓的"隐式转换"。

如果要避免这种自动转换的功能,我们该怎么做呢?就是关键字explicit的作用了,将类的构造函数声明为"显式",也就是在声明构造函数的时候前面添加上explicit即可,

这样就可以防止这种自动的转换操作,如果我们修改上面的MyClass类的构造函数为显式的,那么下面的代码就不能够编译通过了,如下所示:

 

 

此时我们只有调用构造函数来构建对象了;

 

 

  

  

 

以上是关于explicit 关键字的主要内容,如果未能解决你的问题,请参考以下文章

c++ explicit关键字解读

C++ explicit关键字详解

explicit关键字

C++ explicit 关键字详解

c++中explicit和mutable关键字探究

C++中explicit关键字的使用