Effective C++ 条款24
2015-12-26 10:05
459 查看
若全部參数皆需类型转换,请为此採用non-member函数
我们直奔主题假设你定义一个有理数类例如以下
class Rational{ public: Rational(int numerator=0, int denominator=1);//非explicit。同意隐式转换 const Rational operator*(const Rational& rhs); ....................... }; result=oneHalf*2;//正确。相当于oneHalf.operator*(2); result=2*oneHalf;//错误,相当于2.operator*(oneHalf);
我们能够看到
result=2*oneHalf;这句无法通过编译,由于编译器找不多这样一个函数。那为什么
result=oneHalf*2;这句话能通过编译?这是由于此时的类Rational能够进行隐式转换。
为了能运行
result=2*oneHalf;这句,我们能够定义一个非member函数。例如以下
const Rational operator*(const Rational& lhs, const Rational& rhs); result=oneHalf*2;//正确。相当于operator*(oneHalf,Rational temp(2)); result=2*oneHalf;//正确,相当于operator*(Rational temp(2),oneHalf);
相关文章推荐
- libc++abi.dylib: terminate_handler unexpectedly threw an exception
- 程序员之---C语言细节22(函数返回指针注意事项<悬空指针>、查看进程能够分配的内存大小)
- C++ primer (第五版)学习记录1
- 求一个面的法向 c++
- 求矩阵的逆矩阵 c++
- C语言strcat(连接两字符串)用起来真不爽
- C语言字符串操作总结大全(超详细)
- C语言字符数组与字符串的使用详解
- 笔试趣题集锦
- C++链接器工具错误:LNK2001, LNK2019
- C语言九九乘法表
- 【C语言】求1-3+5-7+...-99+101的值。
- 【C语言】输出从公元1000年至2000年所有闰年的年号,每输出3个年号换一行!
- C++学习日记2015.12.25
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的operator=、operator bool、reset、swap、get等介绍
- C语言goto的应用直接跳出多层循环
- 实战c++中的智能指针unique_ptr系列-- unique_ptr的operator=、operator bool、reset、swap、get等介绍
- 【C++ STL应用与实现】7: 如何使用std::forward_list 单链表 (since C++11)
- C语言常用数学函数
- 一起talk C栗子吧(第八十三回:C语言实例--进程间通信概述)