explicit 显示转换 (不允许隐式转换)
2017-03-17 14:05
288 查看
explicit 只对构造函数起作用,用来抑制隐式转换。 class Test1 { public: Test1(int n) { num = n; } //普通构造函数 private: int num; }; class Test2 { public: explicit Test2(int n) { num = n; } //explicit(显式)构造函数 private: int num; }; int main() { Test1 t1 = 12; //隐式调用其构造函数, 成功 自动将12转换为该类对象 // 如果c++类的其中一个构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作: // 将该构造函数对应数据类型的数据转换为该类对象。 Test2 t2 = 12; //编译错误,不能隐式调用其构造函数 Test2 t3(12); //显示调用成功 return 0; } Test1的构造函数带一个int型的参数,代码t1 = 12会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式), 这表示不能通过隐式转换来调用这个构造函数,因此t2 = 12会出现编译错误。 普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。
相关文章推荐
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
- C# 转换运算符:implicit(隐式),explicit(显示)
- C# 转换运算符:implicit(隐式),explicit(显示)
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
- operator,implicit(隐式)和explicit (显示)转换
- 显示转换explicit和隐式转换implicit
- 菜鸟之隐式转换(implicit)、显示转换(explicit)及转换函数(operator()const)
- 隐式转换 && explicit 显示初始化
- C# int类型显示和隐式转换的比较
- C++的隐式转换和explicit关键字
- 隐式类类型转换以及explicit
- C# 显示转换与隐式转换_记录
- 隐式类型转换和explicit关键字的作用
- C++ 中使用explicit关键字避免隐式转换
- c#隐式转换显示转换
- 隐式类型转换和explicit关键字的作用
- explicit 禁止隐式转换
- 不允许从数据类型 nvarchar 到 varbinary 的隐式转换。请使用 CONVERT 函数来运行此查询
- 不允许从数据类型 sql_variant 到 varbinary 的隐式转换