C++:类型转换

在一个类里面,用X::operator double() const{

}//意思是把类里面的东西变成double类的

通常有个const用来保证不会修改自己

 

尽量用自己写的函数来进行类型转化,自动的往往容易错,自己写的一眼就能够看出来。

//举个例子
class Orange;

class Apple{
public:
    operator Orange() const;
};

class Orange{
public:
    explicit Orange(Apple);//加了explicit就不能够进行自动类型转化了
};

void f(Orange){}

int main(){
    Apple a;
    f(a);
    return 0;
}

Apple类中,表示将Apple类转换成为Orange类了,而且加个const不会修改自己。


第二种方法:做一个专用的类型转换函数:

class Rational{
    public:
        operator double() const;
};
Rational::operator double() const{
    return numerator_/(double)denominator_;
}
Rational r(1,3);
double d = 1.3*r;
表示用operator将this函数转换为double,this并没有改,只是做了一个新的东西出来。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值