More Effective C++之21

原创 2006年06月16日 09:22:00
条款21:利用重载技术(overload)避免隐式型别转换(implicit type conversions)
class Rational
{
……

const Rational operator+(const Rational& lhs, const Rational rhs);

……
}

如果我们这么写:
Rational a(10);

Rational b(10,11);

Rational c = a + b;

这样当然是最理想的结果了,没有什么额外的成本,但事实往往并非如此,例如,Rational c = a + 10; C++当然很乐意将10转化成Rational对象,然而这意味的是成本的增加。所以,我们可以使用重载技术。

const Rational operator+(const Rational& lhs, const Rational& rhs);

const Rational operator+(int lhs, const Rational& rhs);

const Rational operator+(const Rational& lhs, int rhs);

当然我们做不到const Rational operator+(int lhs, int rhs);这违反了重载的规则。重载函数的弊端是容易混淆,增加了二义性出现的几率,所以如何权衡还需要看实际的情况。

《More Effective C++》读书笔记-技术

25、将构造函数和非成员函数虚化1、这里所谓的虚拟构造函数,并不是真的指在构造函数前面加上 virtual 修饰符,而是指能够根据传入不同的参数建立不同继承关系类型的对象。class NLCompon...
  • will130
  • will130
  • 2016年05月02日 12:27
  • 2774

More Effective C++----技巧 & (25)将构造函数和非成员函数虚拟化

技巧 本书涉及的大多数内容都是编程的指导准则。这些准则虽是重要的,但是程序员不能单靠准则生活。有一个很早以前的卡通片叫做“菲利猫”(Felix the Cat), 菲利猫无论何时遇到困难,它都会拿...
  • qianqin_2014
  • qianqin_2014
  • 2016年05月06日 23:30
  • 2476

【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则

我们知道,在C++领域,作为进阶阅读材料,必看的书是《Effective C++》。 而《Effective C#》之于C# ,是类似《Effective C++》之于C++一样的存在。 这篇文章,将...
  • zhmxy555
  • zhmxy555
  • 2016年12月25日 15:47
  • 16481

More Effective C++之Item M21:通过重载避免隐式类型转换

C++规则:每一个重载的operator必须带有一个用户定义类型(user-defined type)的参数; 以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西: class UP...
  • janeqi1987
  • janeqi1987
  • 2017年07月24日 11:28
  • 114

More Effective C++----(21)通过重载避免隐式类型转换

Item M21:通过重载避免隐式类型转换 (读这一节内容之前,建议回顾C++转换构造函数和隐式转换函数的相关知识。) 以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西: c...
  • qianqin_2014
  • qianqin_2014
  • 2016年05月06日 18:19
  • 711

利用重载避免隐式类型转换(More Effective C++_21(效率))

class UPInt { // unlimited precision  public: // integers 类  UPInt();  UPInt(int value);  ... };//有关...
  • zhangchen1003
  • zhangchen1003
  • 2015年09月05日 16:37
  • 218

More effective C++

  • 2014年10月03日 21:09
  • 1.84MB
  • 下载

More Effective C++ 无水印pdf

  • 2017年09月22日 10:52
  • 1.78MB
  • 下载

More_Effective_C++

  • 2014年07月07日 23:22
  • 1.33MB
  • 下载

More Effective C++

  • 2013年12月03日 13:47
  • 2.34MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:More Effective C++之21
举报原因:
原因补充:

(最多只允许输入30个字)