使用场景
C++中当你创建了一个类,你想把这个类对象转换成基本类型的函数。类对象->基本类型对象
原理
如下实例,设计一个分数类,实现分数转换成double 浮点数的转换函数。并在mian函数隐式调用。
#include<iostream>
class Fraction{
public:Fraction(int fenzi, int fenmu = 1) : m_numerator(fenzi) , m_denominator(fenmu) {}operator double() const {return static_cast<double>(m_numerator) / m_denominator;}
private:int m_numerator;int m_denominator;
};int main() {Fraction f(3,5);double res = 3 + f; //调用operator double()将 f 转换成 0.6std::cout<<"res = " << res << std::endl;return 0;
}
其中 res = 3 + f;
由编译器进行隐式转换。编译器会先找 int + Fraction的全局 + 的定义,或者去Fraction内部寻找是否存在转换函数。
调用形式:
- 用类型符显示调用
- 自动类型转换时隐式调用
设计形式: operator 数据类型() {实现}
- 不能有返回值
- 不能有参数
相关知识点
基本数据类型->类类型
类类型->另一类类型