C++中的explicit关键字
来源:互联网 发布:淘宝联盟之类的软件 编辑:程序博客网 时间:2024/05/16 17:25
- class T{
- public:
- int a;
- int b;
- T();
- ~T();
- T(int iFirst, int iSecond = 4);
- };
- T():a(0),b(0)
- {
- }
- T::T(int iFirst, int iSecond):a(iFirst), b(iSecond)
- {
- }
- int main(int argc, char* argv[])
- {
- T q; //调用T()
- T w(12,34); //调用T(int ,int)
- T u(22); //调用T(int, int)
- T l=89; //调用T(int, int)
- //上行代码执行了隐式转换, 89-> T temp(89) 然后 T l =temp,拷贝构造
- return 0;
- }
隐式转换总是在我们没有察觉的情况下悄悄发生,除非有心所为,隐式转换常常是我们所不希望发生的。通过将构造函数声明为explicit(显式)的方式可以抑制隐式转换。也就是说,explicit构造函数必须显式调用。
发生隐式转换,除非有心利用,隐式转换常常带来程序逻辑的错误,而且这种错误一旦发生是很难察觉的。
原则上应该在所有的构造函数前加explicit关键字,当你有心利用隐式转换的时候再去解除explicit,这样可以大大减少错误的发生。
阅读全文
0 0
- extern “C”总结 C++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- C++中的 explicit 关键字
- c++中的explicit关键字
- C++中的explicit关键字
- C++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- C++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- c++中的explicit关键字
- C++中的关键字explicit
- 重载和覆盖的区别
- 一段小程序
- 【语言转换】matlab quantile (matrix(:),value) 形式idl实现
- F8开发者大会前瞻:要让Facebook成为微信那样的超级平台,聊天机器人应该怎么做?
- 深度学习培训班当天小结1
- C++中的explicit关键字
- Opengl笔记---深度测试
- HDOJ 1287 破译密码
- JSONModel 遇见关键字为id或者description的处理方法
- 第1课--1.1模拟手机短信发送
- RxJava整理---《一》
- 小米Max 2真机曝光,搭载骁龙626,或与小米6一同发布
- MD5 加密工具类
- GIT学习笔记(1)