C++中的explicit关键字

来源:互联网 发布:怎样投诉淘宝客服 编辑:程序博客网 时间:2024/06/05 20:53

  C++中有了类的概念,在类中有这样的关键字explicit。那么他的作用是什么呢?

  举个例子:

#include <iostream>class T1{public:T1(int a){num=a;}private:int num;};class T2{public:explicit T2(int a){num=a;}private:int num;};void main(){T1 t1=1; //1T1 t1(1); //2T2 t2=1; //3T2 t2(1); //4}


  程序中定义了两个类,第一个类的构造函数没有加关键字explicit,第二个类的构造函数加了关键字explicit。

  主函数中第一句代码是正确的,隐式调用了类T1的构造函数。第二句也是对的,显示调用该类的构造函数。第三句错误,编译后显示 无法从“int”转换为“T2”,也就是说没有隐式调用类T2的构造函数。第四句是调用该类构造函数的正确形式,即显示调用。

由此可见关键字explicit是放在类的构造函数前的,作用是禁止隐式调用该构造函数。

0 0
原创粉丝点击