C++ 重载类型转换运算符

本文探讨了C++中如何重载类型转换运算符,包括基础样例、显式调用以及处理多个类型转换运算符时可能出现的二义性问题。通过示例展示了类型转换运算符函数的定义,并解释了`explicit`关键字的作用。
摘要由CSDN通过智能技术生成

C++ 重载类型转换运算符

operator data_type ()
{

return xxxx // 返回值的类型即为data_type,不需要再加返回值类型声明
}
注意: 上述即为类型转换运算符函数的定义模型。重载类型转换运算符必须为类的成员函数,不能有返回类型,形参列表也必须为空,通常是const的。

1. 基础样例

class Complex {
   
private:
    int value;
public:
    explicit Complex(int i) : value(i) {
    }
    operator int ()    // 将Complex对象直接转为int类型,同时函数的返回值也为int类型
    {
   
        return value;  
    }
};

int main()
{
   
    Complex c(2);
    cout << (int)c << endl;  // cout << c.operator int() << endl;
    int temp = 1 + c;   // int temp = 1 + c.operator int() << endl;
    cout << temp << endl;

    return 0;
}
};

输出结果:

2
3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值