explicit关键词
explicit关键词
一、前言
在读别人的代码时,我们常常会在构造函数面前看到explicit这个字样,那么explicit这个词是什么意思呢
二、explicit解释
explicit:明确的,显示的(来自网易翻译)
这个关键词的作用主要就是修饰类的构造函数,用来表明这一构造函数是显式调用的
下面我用案例进行描述
三、代码
#include <iostream> class test { public: test(){ std::cout<<"调用无参构造函数\n"; }; explicit test(int m) { std::cout<<"调用有参构造函数"<<"\t打印参数:"<<m<<std::endl; } }; int main() { test exp; exp = 998; /* exp = 998的作用相当于 test qwe(998); exp = qwe;
隐式调用 */ /* 调用无参构造函数 调用有参构造函数 打印参数:998 */ return 0; }
代码中,exp = 998的作用相当于 test qwe(998);exp = qwe 操作 ,属于隐式调用操作,而如果我们不想触发隐式调用,那就使用explicit关键字
四、使用 explicit
可以看到,如果我们在构造函数上加上explicit后,这样的赋值(隐式调用)就会报错