C++中的explicit关键字
来源:互联网 发布:网络销售总监岗位职责 编辑:程序博客网 时间:2024/06/10 03:31
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
- Ubuntu 16.04设置root用户登录图形界面
- [Leetcode][python]Partition List
- Linux CentOS7下安装Zookeeper-3.4.10服务(最新)
- python @,@staticmethod,@classmethod
- Java泛型详解
- C++中的explicit关键字
- 190. Reverse Bits
- 从零基础认识maven工程构建
- java不同安装包的安装方法(rpm,bin,tar)
- 一元多项式的加法器 C语言版 链表版 顺序表版
- 解决Atom 的 GitHub 和 Git 面板无法打开
- 算法设计与分析——使用dijkstra算法计算最短路径并且给出路径上的节点序列
- GC
- Java基本类型和引用类型