C++ 运算符重载 operator xxx * ()

今天看见一段code。 发现一个很好玩的用法. 可能我见识少吧。记录一下:

class   Loop
{
public:
。。。。。。
     inline   operator  event_base * ()  const
    {
         return  _base;
    };
}

乍一看,还真没看明白这个的用途。研究一下,这个函数很管用。这个函数会把这个class的指针转化为event_base指针。当然你的class里边要有event_base*的成员。

看下边的例子



class   Vector
{
public:
     float  x,y,z;



     Vector () : x( 0 ), y( 0 ), z( 0 ){
    }

     Vector float  x,  float  y,  float  z ) : x(x), y(y), z(z){
    }

     operator   float *(){
         return  &x;
    }

     operator   const   float  *(){
         return  &x;
    }

我们就可以这么玩了

Vector  x ( 1 2 3 );
float * f = x;
assert (*f ==  1 );

怎么样,是不是很好玩  哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值