C++-非メンバー関数(non-member)を使用して関数のすべてのパラメータを処理するには、タイプ変換が必要です.
1373 ワード
非メンバー関数(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,暗黙変換が発生した.
コード:
出力:
本住所: 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