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

本文介绍了一种在C++中通过运算符重载将类实例转换为指针的方法,并提供了具体的代码示例。展示了如何将自定义类的实例转换为float指针,以便直接访问其内部数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看见一段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){
    }

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

    operator float*(){
        return &x;
    }

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

我们就可以这么玩了

Vector x(123);
float* f = x;
assert(*f == 1);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值