转换函数(Conversion Function)
- 不同类型的转换:将这种类型转为其他类型
class Fraction
{
public:
Fraction(int num,int den=1)
:m_numerator(num),m_denominator(den){}
operator double() const{
return (double)(m_numerator / m_denominator);
}
private:
int m_numerator;
int m_denominator;
};
int main()
{
Fraction f(3,5);
double d = 4+f;
}
- non-
explicit
-one-argument ctor:将其他类型转为这种类型
class Fraction
{
public:
Fraction(int num,int den=1)
:m_numerator(num),m_denominator(den){}
Fraction operator+ (const Fraction& f){
return Fraction(......);
}
private:
int m_numerator;
int m_denominator;
};
int main()
{
Fraction f(3,5);
Fraction d2 = f+4;
}
explicit
-one-argument ctor
class Fraction
{
public:
explicit Fraction(int num,int den=1)
:m_numerator(num),m_denominator(den){}
operator double() const{
return (double)(m_numerator / m_denominator);
}
Fraction operator+ (const Fraction& f){
return Fraction(......);
}
private:
int m_numerator;
int m_denominator;
};
int main()
{
Fraction f(3,5);
Fraction d2 = f+4;
}