explicit

来源:互联网 发布:java流程图制作软件 编辑:程序博客网 时间:2024/06/06 07:06
/*explicit:只用于构造函数没有explicit下面四种语义都可以:MySoc ms1 = 66;  //默认数据转MySoc ms2(99);MySoc ms3 = MySoc(5); MySoc ms4 = (MySoc)5; 上面可以解释为 数据转换、构造、赋值 造成了代码的歧义。有explicit 限定了自动转换。没有 explicit ,代码歧义多,可以解释为构造 或 数据转换。*/#include<iostream>using namespace std;class MySoc{public:int x;explicit MySoc(int data) :x(data){}};void main(){/*MySoc ms1 = 66;  //默认数据转MySoc ms2(99);MySoc ms3 = MySoc(5); 标准MySoc ms4 = (MySoc)5; *///上面这几种写法都可以,但是也带来了阅读的理解。//代码不够清析,不能看出是 构造 还是 类型转换 或者是 赋值。//没有 explicit ,代码歧义多,可以解释为构造 或 数据转换。//有 explicit MySoc ms(99);//MySoc ms1 = 99;//explici 限定自动转换,但可以强制转换。如下代码MySoc ms1 = (MySoc)99;cout << ms.x << endl;cin.get();}

0 0