隐式类类型转换 [C++ Primer]
2013-04-11 16:59
405 查看
可以用单个形参来调用的构造函数定义了从形参类型到该类类型的一个隐士转换。
这段程序将string类型的参数传递给一个期待Sale_item类型参数的函数;
编译器会自动使用接受一个string对象的构造函数从null_isbn生成一个新的Sale_item对象,新生成的临时的Sale_item对象被传递给该函数。
1.可以再接受一个参数的构造函数前面加explicit来避免这种隐士的转换;
2.可以通过显示地使用构造函数来生成转换。
1 class Sale_item{ 2 3 Sale_item(std::istream &s); 4 5 }; 6 7 string null_isbn = "123456789"; 8 item.same_isbn(null);
这段程序将string类型的参数传递给一个期待Sale_item类型参数的函数;
编译器会自动使用接受一个string对象的构造函数从null_isbn生成一个新的Sale_item对象,新生成的临时的Sale_item对象被传递给该函数。
1.可以再接受一个参数的构造函数前面加explicit来避免这种隐士的转换;
2.可以通过显示地使用构造函数来生成转换。
string null_isbn = "123456789"; item.same_isbn(Sale_item(null_isbn )); 除非有明显的额理由需要使用隐士转换,否则单形参构造函数应该总是声明为explicit(只出现在声明部分);
相关文章推荐
- C++ primer学习之类型转换(1) 隐式转换
- C++ Primer 学习笔记 — 隐式类类型转换
- C#数据类型转换(1--隐式转换)
- javascript中的隐式类型转换
- 隐式类类型转换
- C#中数据类型转换-隐式转换
- JavaScript隐式类型转换
- JavaScript基础之数据类型的隐式转换
- C++隐式类型转换
- 隐式类型转换
- js哪些情况会出现隐式类型转换
- 实验测试1《C++ Primer》第五版——第十四章 重载运算与类型转换
- 隐式的类类型转换
- javascript的数据类型and隐式转换
- 算术类型隐式转换
- ORACLE隐式类型转换
- 测试两个类型是否可以进行隐式转换
- 前端面试 - js隐式类型转换特殊实例
- JavaScript的隐式类型转换
- C++ 隐式的类类型转换