我想超載(*,+, - ,/,=)opertors在FLOAT
類。我寫了這個類:運算符(*,+, - ,/,=)的重載?
class FLOAT{
private:
float x;
public:
FLOAT(){ x=0.0; }
void setFloat(float f) { x=f; }
void operator+(FLOAT obj) {x=x+obj.x; };
void operator-(FLOAT obj) {x=x-obj.x; };
void operator*(FLOAT obj) {x=x*obj.x; };
void operator/(FLOAT obj) {x=x/obj.x; };
FLOAT& operator=(const FLOAT& obj) {this->x=obj.x; return *this; };
};
,我使用它,例如:
int main() {
FLOAT f,f2,f3;
f.setFloat(4);
f2.setFloat(5);
f3=f+f2;// here is the problem!
system("pause");//to pause console screen
return 0;
}
f3=f+f2
似乎不正確的。我能做什麼?
我強烈推薦複製構造函數和'float'的隱式構造函數。在可能的情況下也通過'const FLOAT&'傳遞對象。 –
@MooingDuck:爲什麼?編譯器生成的copy ctor有什麼問題?事實上,Adban,你可能會失去賦值運算符。編譯器也會提供。 –
@BenjaminLindley:我一直忘記編譯器有時會提供這些。我更願意明確地看到它們,所以我有我的選項列表。分配也一樣。這不是必需的,但也不是空白。 –