C++的隐式转换和explicit关键字
2 {
3 public:
4 T(int t){}
5 };
6 void foo(T t)
7 {
8 return;
9 }
10 int main()
11 {
12 T t(3);
13 foo(3); //此时会将3隐式转换为T
14
15 return 0;
16 }
17
通explicit关键字可以禁止这种隐式转换
2 {
3 public:
4 explicit T(int t){}
5 };
6 void foo(T t)
7 {
8 return;
9 }
10
11 int main()
12 {
13 T t(3);
14 foo(3); //编译器报错error: conversion from ‘int’ to non-scalar type ‘T’ requested
15
16 return 0;
17 }
看到过说对有多个参数的构造函数使用explicit是个语法错误。
但是用gcc好像这样不报错
g++ -O2 -Wall -o tt tt.cpp
2 {
3 public:
4 explicit T(int t, int s){}
5 };
6 void foo(T t)
7 {
8 return;
9 }
10
11 int main()
12 {
13 T t(3, 4);
14 return 0;
15 }
16
1 class T
2 {
3 public:
4 explicit T(int t){}
5 };
6 void foo(T t)
7 {
8 return;
9 }
10
11 int main()
12 {
13 T t(3);
14 foo(3); //编译器报错error C2664: 'foo' : cannot convert parameter 1 from 'int' to 'T'
15
16 return 0;
17 }
18
转载于:https://www.cnblogs.com/lbsx/archive/2009/08/16/1547123.html
C++的隐式转换和explicit关键字相关推荐
- 40隐式构造函数和隐式转换,还有explicit关键词的确切含义【C++学习笔记】
40隐式构造函数和隐式转换,还有explicit关键词的确切含义 隐式的意思是:不会明确地告诉你它要做什么,它有点像在某种情况下自动的工作 隐式转换 double a = 0.5; int b = a ...
- C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit
文章目录 C语言类型转换 隐式类型转换 显式类型转换 C++ 强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast 类的隐式类型转换 ...
- C++禁止隐式转换之explicit用法
1.隐式类型转换 #include <iostream> using namespace std; class Test {public: Test(int num){cout <& ...
- 隐式转换函数高级使用
Scala隐式转换函数的底层原理 类型不匹配: java:会强制转换 scala:会使用对象的方法进行数据类型转换,隐式转换,scala中只看函数签名(参数列表和返回值) object Scala_L ...
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别...
msdn参考:http://msdn.microsoft.com/zh-cn/library/s53ehcz3.aspx http://msdn.microsoft.com/zh-cn/library ...
- c++ explicit 与 隐式转换
一.关键字 explicit explicit, 顾名思义,即明确的,作为c++中的关键字.名如其意. 在C++中,我们有时可以将构造函数用作自动类型转换函数.但这种自动特性并非总是合乎要求的,有时会 ...
- C# 隐式转换关键字 implicit
implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...
- C++拾趣——类构造函数的隐式转换
之前看过一些批判C++的文章,大致意思是它包含了太多的"奇技淫巧",并不是一门好的语言.我对这个"奇技淫巧"的描述颇感兴趣,因为按照批判者的说法,C++的一些特 ...
- ahjesus自定义隐式转换和显示转换
implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 参考戳此 explicit ...
最新文章
- MySQL数据库自连接查询inner join ... on
- 「每周CV论文推荐」 初学深度学习活体与伪造人脸检测必读的文章
- 线性回归代码matlab
- 分布式01-Dubbo基础背景
- Boost enable_if库的测试程序
- mysql免安装服务器配置_MYSQL免安装环境配置
- mysql表导出csv空值_从mysql中导出csv格式的数据
- windows下system函数的使用
- pandas处理excel文件和csv文件
- EditText数据回显
- 【SpringMVC整合MyBatis】整合思路与工程结构
- android新运行时权限
- Atitit db model 数据库快速建模法 开发效率 目录 1. 结构(数据)设计 行为(处理)设计:	1 2. 业务建模阶段	1 2.1. Ui建模法,根据表单字段建立表字段	2 2.2.
- Cocos2d-x游戏开发_战斗算法
- RS232串口与RS485串口的区别
- js数组对象重复的数据添加标识
- H264 视频文件 帧格式 传输封装等
- 2015年3月CCF软考试题
- matlab ode 实例,选择 ODE 求解器
- python实现渐变图像