explicit的用法

网友投稿 269 2022-09-01

explicit的用法

explicit用法,防止对象隐式被转换。

例子一:隐式转换

class C{ public : C ( int j ); int i;};C :: C (int j){ i = j;}int main(){ C c( 0 ); c = 5 ; // 5被隐式转换 }

c  =   5   相当于C temp( 5 ); //  实例化一个临时对象, c  =  temp;  //  用 = 赋值 temp . C ::~ C();  //  temp 的析构函数被激活

如果类内的成员是一个指针,这种隐式转换是很危险的。为了防止这种隐式转换,我们把    C ( int j ); 改写为explicit     C ( int j );即可。

这下编译的时候,会不允许这种隐式的转换,出现如下提示:

Compiling

test . cppD : \DATUM\DATUM\PROJECT\Test_muable\test . cpp( 14 ) : error C2679 : binary ' = ' : no operator defined which takes a right - hand operand of type ' const int ' (or there is no acceptable conversion)Error executing cl . exe . Test_muable . exe - 1 error(s) , 0 warning(s)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:已备案域名用国外服务器会不会掉备案?
下一篇:临时电子邮件服务名单
相关文章

 发表评论

暂时没有评论,来抢沙发吧~