conversion_function
Fraction.hpp
- 直接把类对象隐式转化为指定类型
#pragma once
class Fraction
{
public:
Fraction(double a,double b = 1):m_numerator(a),m_denominator(b) {}
~Fraction() {}
operator double() const//转换函数
{
return (double)(m_numerator/m_denominator);
}
private:
double m_numerator;
double m_denominator;
};
test.cpp
#include <iostream>
#include "Fraction.hpp"
using namespace std;
int main()
{
Fraction f(4,5);
double a = 4 + f;
cout << a << endl;
return 0;
}
non-explicit-one-a
- Fraction
class Fraction
{
public:
Fraction(int num,int den=1):m_numerator(num),m_denominator(den) {}
~Fraction() {}
Fraction operator+(const Fraction& f){
}
private:
int m_numerator;
int m_denominator;
};
Fraction f(3,5);
Fraction d2=f+4;//构造函数将4隐式转换为fraction类型
#pragma once
class Fraction
{
public:
explicit Fraction(int num,int den=1):m_numerator(num),m_denominator(den) {}//取消隐式转换
~Fraction() {}
Fraction operator+(const Fraction& f){
}
private:
int m_numerator;
int m_denominator;
};
Fraction f(3,5);
Fraction d2=f+4;//explicit 将构造函数取消隐式转换之后,4无法转换为fraction,报错