C++定义隐式转换函数

转载:http://www.cnblogs.com/younes/archive/2010/03/08/1681115.html

C++定义隐式转换函数

  C++中单参数构造函数若不声明为explict,在合适的场合可以产生隐式转换:由成员变量类型转换为类类型。

  下面的代码展示如何实现反向的转换: 


 1  void  changeFontSize(FontHandle f,  int  newsize);
 2  class  Font{
 3  public :
 4       operator  FontHandle()  const     // 隐式转换函数
 5      {
 6           return  f;
 7      }
 8  private :
 9      FontHandle f;
10  };
11 
12  Font f;
13  int  newsize;
14  changeFontSize(f, newsize);       // 将Font隐式转换成FontHandle


 

   另外,两个或更多参数的non-explicit构造函数,如果所有形参都提供了默认实参,那么在需要一个类类型对象的表达式位置,提供一个first形参类型的对象,编译器也执行隐式转换,转换得到一个类对象。

  如,构造函数Rational(int num1 = 0,  int num2 = 1); Rational类中重载了operator*。表达式result = oneHalf * 2; 2发生隐式转换为Rational对象。result 和 onehalf为Rational对象。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值