C++中的explicit关键字
来源:互联网 发布:乔斯韦登请愿知乎 编辑:程序博客网 时间:2024/05/16 04:43
#include <iostream>using namespace std;class Demo{private:int value;public:Demo():value(0){}Demo(int val):value(val){}Demo(const Demo& d):value(d.value){}};int main(){Demo d = 1;Demo dd = d;return 0;}
Demo d = 1会这样运行:
通过将1传递给单个形参构造函数,用这个构造函数来初始化对象d。
对于下一行代码,通过将d传递给复制构造函数,来初始化dd。
这些隐式调用都是自动完成的。有时候运行的很好,但是也有的时候会造成出乎意外的结果。
能不能防止隐式调用呢?可以的。explicit就是用作这个用途的。当在构造函数和复制构造函数前面都加上explicit时,编译就会出错,下面的写法才是正确的:
#include <iostream>using namespace std;class Demo{private:int value;public:Demo():value(0){}//explicit能防止以赋值语法带有转型操作的初始化explicit Demo(int val):value(val){}explicit Demo(const Demo& d):value(d.value){}};int main(){//Demo d = 1;//构造函数加上explicit时错误Demo d(10);//Demo dd = d;//赋值构造函数加上explicit时错误Demo dd(d);return 0;}
转自:
http://www.programlife.net/cpp-explicit-keyword.html
- 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
- Hadoop压缩算法说明与选择
- Spring 2.5 Annotation
- 如何让Android中的 Base64工具类支持2.2以下的系统
- linux命令大全
- iOS开发——遍历目录
- C++中的explicit关键字
- GetLastError
- Oracle with语句示例
- http中的ajax与 jquery_ajax中的用法解读
- 招聘总经理的真实试题
- 操作性级代码如何调试?
- linux 查看端口号命令
- SQL Server 2005安装完后没有SQL Server Management Studio的解决办法
- 无线鼠标