C++ explicit<转>
来源:互联网 发布:sql绝对值函数 编辑:程序博客网 时间:2024/06/08 16:40
好久没写博客了,这些天看effective C++积攒下不少疑问,今天就看到个。
关于explicit的,本身没什么特殊含义,用来声明构造函数不能发生隐式类型转换的,查资料又对构造函数有些理解,故此记录下~
C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。
例如下面例子中C的构造函数C(int i)就是,既可以用来作为构造器,又可以实现隐式转换C c=2;但是有时这并不是我们想要的,就可以将这个构造函数声明为explicit,以避免将构造函数作为隐式类型转换符来使用。Copy constructor也是同样的,如果Copy constructor被声明为explicit,则这个类对象不能用于传参和函数返回值。但是仍然可以直接调用。。
#include <iostream>#include <string>class mystring {public: explicit mystring(const char* p); explicit mystring(int n);};mystring::mystring( const char* p ){ std::cout << p << std::endl;}mystring::mystring( int n ){ std::cout << n << std::endl;}int main(int argc, char *argv[], char *env[]){ const char *c = "Hello World!!!"; int i = 4; mystring mystr1 = mystring(c);//ok mystring mystr2 = mystring(i);//ok // 构造函数加上关键字explicit,下面两句编译都过不去 // 因为此时这种隐式转换不允许 // 所以为了避免二意义性,单参数的构造函数建议要加上explicit mystring mystr3 = c; // error,不允许隐式的转换 mystring mystr4 = i; // error,不允许隐式的转换 return 0;}
0 0
- C++, explicit
- c++-explicit
- <转> explicit
- [C++]explicit解释
- [C++]explicit解释
- [C++]explicit解释
- C++:explicit 关键字
- C++explicit关键字
- 【C++】explicit关键字
- explicit构造函数(C++)
- C++explicit关键字
- 【C++】explicit构造函数
- 【C++】explicit关键字
- C++explicit的用法
- 【C++】explicit关键字
- [C++]explicit构造函数
- C++explicit的使用
- c/c++ explicit
- js常用继承方法
- Pow(x, n)
- HDU 1213
- 《管理概论》第三周 课堂笔记与学习心得
- miniSTM32开发板的一键下载电路
- C++ explicit<转>
- log4j xml配置详解
- cocos2dx3.0rc导出自定义类到lua的方法详细步骤
- ssh免密码登录
- 室内装璜设计尺寸
- 2015061804 - 10年程序开发经验总结(1)
- 在python中用BaseHTTPRequestHandler模块儿时获取客户端的ip和端口
- 本地Git仓库同步到Bitbucket 远程Git仓库
- 程序员面试什么最重要?