C++中的explicit作用:禁止构造函数进行隐式类型转换

网友投稿 351 2022-11-05


C++中的explicit作用:禁止构造函数进行隐式类型转换

C++中的explicit作用:禁止构造函数进行隐式类型转换

一 什么是隐式类型转换

#include class Test {public: Test(int a) { std::cout << a << std::endl; }};int main() { Test t1 = 10; // 隐式类型转换:看上去类似赋值,其实是调用构造函数 Test t2(10); // 显示类型转换:显然是调用构造函数 // Test t1 = 10; 和 Test t2(10); 两者等同 }

Test t1 = 10;

#include class Test {public: explicit Test(int a) { std::cout << a << std::endl; }};int main() { Test t1 = 10; // (报错)隐式类型转换:看上去类似赋值,其实是调用构造函数 Test t2(10); // 显示类型转换:显然是调用构造函数 // Test t1 = 10; 和 Test t2(10); 两者等同 }

三 使用exolicit的限制条件

1、explicit关键字只需用于类内的单参数构造函数前面。

explicit Test(int param) { }

2.除了第一个参数以外的其他参数都有默认值的时候, explicit关键字依然有效

explicit Test(int p1, int p2= 0) { }


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

上一篇:百度收录查询API(百度收录查询api源码)
下一篇:信用卡进度查询API(信用卡进度查询怎么查)
相关文章

 发表评论

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