C++ - explicit在构造函数的使用 及 详解
来源:互联网 发布:最新全国高校数据库 编辑:程序博客网 时间:2024/06/05 06:00
explicit在构造函数的使用 及 详解
本文地址: http://blog.csdn.net/caroline_wendy/article/details/22727823
最近又到了招聘的季节, C++被问的问题就特别多, 最近同学问我explicit的含义, 我说直接看我的blog吧.
下面就是explicit的详解.
explicit的主要用法就是放在单参数的构造函数中,防止隐式转换, 导致函数的入口参数, 出现歧义.
如果可以使用A构造B, 未加explicit的构造函数, 当使用B进行参数处理时, 就可以使用A, 使得接口混乱.
为了避免这种情况, 使用explicit避免隐式构造, 只能通过显示(explicit)构造.
下面是代码, 仔细阅读必有收获, 可以试着删除explicit, 调用注释的语句.
/*************************************************File: main.cppCopyright: C.L.WangAuthor: C.L.WangDate: 2014-04-01Description: explicitEmail: morndragon@126.com**************************************************//*eclipse cdt, gcc 4.8.1*/#include <iostream>using namespace std;class A {};class B {public: // conversion from A (constructor): explicit B (const A& x) { std::cout << "B's constructor" << std::endl; } // conversion from A (assignment): B& operator= (const A& x) { std::cout << "B's assignment" << std::endl; return *this; } // conversion to A (type-cast operator) operator A() { std::cout << "B's conversion" << std::endl; return A(); }};void fn (B arg) {std::cout << "function" << std::endl;}int main (){ A foo; B bar(foo); //B bar = foo; // calls constructor, 添加explicit出错, 不能默认构造 //bar = foo; // calls assignment //foo = bar; // calls type-cast operator //fn(foo); //添加explicit出错, 就不能默认的隐式转换 fn(bar); return 0;}
B's constructorfunction
3 0
- C++ - explicit在构造函数的使用 及 详解
- C++ - explicit在构造函数的使用 及 详解
- explicit构造函数(C++)
- 【C++】explicit构造函数
- [C++]explicit构造函数
- explicit显示使用构造函数
- explicit 构造函数的意义
- c++ 的 explicit 构造函数
- explicit构造函数的作用
- explicit构造函数的作用
- explicit构造函数的作用
- 1.默认构造函数和explicit关键字的使用
- c++ explicit在构造函数中的应用
- C++explicit的使用
- explicit 和构造函数一起使用
- 关于explicit,和构造函数一起使用.
- 构造函数的explicit关键字声明
- 只能用于构造函数的explicit
- Unity3D入门 简单的碰撞检测
- 汇编语言 王爽 课程设计二
- 数据库删除语句 Drop/Delete/Truncate比较
- eclipse git 插件集成与本地使用(傻瓜教程 一)
- PHP下使用CURL方式POST数据至API接口的方法
- C++ - explicit在构造函数的使用 及 详解
- 计算两个经纬度坐标见多少米
- 中国天气网天气API参数详细解释说明
- Android导入一个工程时提示 Invalid project description的解决方法
- PHP检测网站的URL地址是否被百度新闻收录(curl模式)
- Android开发之如何让程序开机启动
- PHP函数:CURL抓取网站内容的,支持301 302跳转
- android自动化测试报告调研
- 项目验收管理