作者Ygulu (生活以下)
看板C_and_CPP
標題[問題] 重載運算子
時間Mon Apr 6 21:49:16 2009
float.h
#ifndef FLOAT_H
#define FLOAT_H
#include <iostream>
using namespace std;
class Float
{
friend void printFloat(Float);
private:
float F;
public:
Float(): F(0) {}
Float(float x): F(x) {}
Float operator+=(Float &FF)
{
F+=FF.F;
return F;
}
operator float()
{
return F;
}
};
#endif
TestF.cpp
#include "Float.h"
int main()
{
Float F1(1.2), F2(3.9);
cout << F1 << endl;
cout << F2 << endl;
cout << "F1+F2=" << F1+F2 << endl;
cout << "F1*F2=" << F1*F2 << endl;
cout << "F1+=F1 " << (F1+=F1) << endl;
system("pause");
}
這個程式執行起來沒問題
但我有兩個問題
1. 我沒有定義 operator+() 跟 operator*() 卻可以使用 F1+F2 跟 F1*F2
這樣是正常的嗎?
2. 一定要定義轉換運算子operator float()才能使用重載運算子嗎?
還是有其他不需要使用operator float()就可以使用重載運算子的方法?
感謝您的解答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.210.177
推 legnaleurc:1.Float先被轉型成float才匹配到+和* 04/06 22:00
→ legnaleurc:2.完全無關 04/06 22:01
→ Ygulu:可是我把operator float()去掉就編譯不過了 怎麼會無關? 04/07 01:27
→ legnaleurc:看一下LPH66的回文 04/07 01:42