過載運算子

2021-07-31 08:59:42 字數 3453 閱讀 8548

–運算子過載,就是對已有的運算子重新進行定義,賦予其另一種功能,以適應不同的資料型別。

此處有高精度+ - * / % > < >= <= ==

不要在意標頭檔案。。

本篇的高精度自帶正負

用動態陣列儲存

不用考慮位數的問題

只要空間不超限就行

#include

using

namespace

std;

struct bigint

bigint(int inum)

bigint operator=(const

int inum)

if(tmp!=0)num.push_back(tmp);

else

if(num.empty())num.push_back(0);

return *this;

}bigint operator = (const

string snum)

for(vector

::size_type i(num.size() - 1); num[i] == 0 && i > 0; --i) num.pop_back();

return *this;

}bigint operator = (const bigint bint)

bigint operator+(const bigint bint)const

else

if(bint.symbol)

vector

::size_type lena(num.size()), lenb(bint.num.size()), lng;

lng = (lena > lenb ? lena : lenb);

for(vector

::size_type i(0); i < lng; ++i)

if(rslt.num[lng]==0)rslt.num.pop_back();

return rslt;

}bigint operator - (bigint bint) const

}

else

myint=-myint;bint=-bint;

rslt.symbol = true; }}

else

if(myint.symbol) return -(-myint + bint);

else

if(bint.symbol) return myint + (-bint);

for(vector

::size_type i(0); i < lng; ++i)

else rslt.num[i] = myint.num[i] - bint.num[i];

}

else rslt.num[i] = myint.num[i];

rslt.num.push_back(0);

}

for(vector

::size_type i(rslt.num.size() - 1); rslt.num[i] == 0 && i > 0; --i)

rslt.num.pop_back();

return rslt;

}bigint operator - () const

bigint operator * (const bigint bint) const

if(rslt.num[len - 1] == 0)

rslt.num.pop_back();

if(rslt != 0)

rslt.symbol = symbol ^ bint.symbol;

return rslt;

}

bigint operator / (const bigint bint) const

}

++j;

}

bigint rslt(rslts);

if(rslt != 0)

rslt.symbol = symbol ^ bint.symbol;

return rslt;

}

bigint operator % (const bigint bint) const

}

}

rslt.symbol = symbol;

return rslt;

}

bigint operator += (const bigint bint)

bigint operator -= (const bigint bint)

bigint operator *= (const bigint bint)

bigint operator /= (const bigint bint)

bigint operator %= (const bigint bint)

bool

operator

< (const bigint bint) const

for(vector

::size_type i(blen - 1); i > 0; --i)

}

if(!bint.symbol && !symbol)

return num[0] < bint.num[0];

else

return bint.num[0] < num[0];

}

bool

operator>(const bigint bint)const

bool

operator

<= (const bigint bint)const

bool

operator >= (const bigint bint)const

bool

operator != (const bigint bint)const

bool

operator == (const bigint bint)const

}; istream& operator >> (istream &in, bigint& x)

ostream& operator

<< (ostream &out, bigint& x)

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...