条款46:需要类型转换时请为模板定义非成员函数

  1. template实参推导过程中从不将隐式类型转换函数纳入考虑。
  2. 使用friend关键字将operate*声明为友元函数,可以在推导出Rational中的t的时候具现化该类,同时自动声名该友元函数,于是我们调用的就是一个普通函数了(可以使用隐式类型转换)。
  3. 定义于类内部的函数都会自动inline,为了不让代码膨胀,可以让friend函数不做任何事,只调用类外的辅助函数。
  4. 当我们编写一个class template,而它所提供之“与此template相关的”函数支持“所有参数之隐式类型转换”时,请将那些函数定义为“class template内部的friend函数”

你可能感兴趣的:(条款46:需要类型转换时请为模板定义非成员函数)