C++-非メンバー関数(non-member)を使用して関数のすべてのパラメータを処理するには、タイプ変換が必要です.


非メンバー関数(non-member)を使用して関数を処理するすべてのパラメータにはタイプ変換が必要です.
本住所: http://blog.csdn.net/caroline_wendy/article/details/24309293
一部の関数では、すべてのパラメータにタイプ変換を使用する必要があります.たとえば、乗算、有理数クラスRationalを書くには、乗算操作を実行する必要があります.
関数満足:Rational=Rational*double;Rational = double*Rational; 非メンバー関数(non-member)を使用する必要があります.
メンバー関数の開始者はクラスでなければなりません.doubleタイプが以前の場合、乗算は実行できないため、非メンバー関数を使用します.
実行時:Rational=Rational*Rational(double);Rational=Rational(double)*Rational,暗黙変換が発生した.
コード:
/*
 * test.cpp
 *
 *  Created on: 2014.04.22
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>

//   
class Rational {
public:
	Rational(double numerator = 0, double denominator = 1) :
		m_n(numerator), m_d(denominator) {}
	double numerator() const {return m_n;};
	double denominator() const {return m_d;};
	double value() {return (m_n/m_d);}
private:
	double m_n;
	double m_d;
};

const Rational operator* (const Rational& lhs,
		const Rational& rhs) {
	return Rational(lhs.numerator()*rhs.numerator(),
			lhs.denominator()*rhs.denominator());
}

int main(void) {
	Rational oneFourth(1, 4);
	Rational result;
	result = oneFourth * 3.5;
	result = 3.5 * oneFourth;
	std::cout << "result = " << result.value() << std::endl;

	return 0;
}

出力:
result = 0.875