直接看一段代码:
#include<iostream>
using namespace std;
class Fraction
{
public:
explicit Fraction(int num,int dem=1) :numerator(num), denominator(dem){}
operator double() const //转换函数
{
return (double)(numerator / denominator);
}
private:
int numerator;
int denominator;
};
int main()
{
Fraction f(3, 5);
double d = f + 4; //合法操作
system("pause");
return 0;
}
代码中直接将一个类与一个数字相加,这是合法的。因为在类中,重载了()操作符,在main函数中,对象f通过转换函数并返回double值,完成上述操作。
转换函数
类转换为参数类型
-
创建转换函数的规则:
1.转换函数必须是类的成员函数;
2.转换函数不能指定返回类型,但有返回值;
3.转换函数没有参数;
-
形式为:
operator typeName(); //重载()操作符,typeName为返回类型。
类可以转换为参数,参数也可以转换为类 ----->(c++中重要的关键字----explicit)