什麼是函式過載和運算子過載
1樓:尚學堂前端學院
函式過載 定義名稱相同但引數不同(個數、型別)的函式。
int max(int a, int b);
float max(float a, float b);
bool max(bool a, bool b);
呼叫時編譯器會自動選擇正確的函式。
max(3,7); ok
max(,;ok
max(,7); error
2.運算子過載。
過載為函式。
對已有的運算子重新定義,賦予另一種功能。
過載的運算有特殊名稱的函式,名字有關鍵字operator和其後要定義的運算子號組成。
返回型別 operator運算子(引數列表);
函式的引數數量應該與運算子操作的數的數目相同,一元運算子有乙個引數,二元運算子有兩個引數;引數型別根據要操作的物件型別決定。
以下運算子不能過載:
條件運算子(?:作用域運算子(::成員指標運算子(.*
過載為成員函式。
運算子的第乙個操作元素為當前物件(也是this指標),如果有第二個引數則由引數指定。
學習程式設計知識,推薦來北京尚學堂,優秀的師資和科學的教學方式,會帶給你最好的教育。
運算子過載的原則是什麼?
2樓:唐博
1、過載後的操作符,必須至少有乙個運算元是使用者定義的型別。
2、不能違反操作符的句法規則,比如用「+」計算兩個物件的差。
3、不能定義新的操作符,要使用原有的。
4、有一些操作符是不能過載的,但是絕大部分的算術運算子和邏輯運算子都可以過載。
運算子過載? 什麼叫運算子過載? 這個7,8是怎麼計算出來的?
3樓:清風知識城
v1 + v2,才是運算子過載,運算過載,是指用系統的運算子,計算你定義的新的資料型別。如:+ 號運算,在系統中他定義了實數的相加運算,對於字串他被定義為字串的連線。
你上面是將+號的運算定義到乙個兩維向量上,具體定義實現應該是:
def __add__(self,other): return vector( +
這個函式的意思就是,當vector這個類生成的例項資料型別,進行+號的運算時:
他返回乙個vector型別例項物件,物件的第乙個分量 = +號兩邊vector例項物件(也就是v1,v2 )的第乙個分量的和,(5+2)
第二個分量= +號兩邊vector例項物件(也就是v1,v2 )的第二個分量的和(10-2)。
c++運算子過載是什麼意思
4樓:素公升迮津
所謂過載,就是重新賦予新的含義。函式過載就是對乙個已有的函式賦予新的含義,使之實現新功能,因此,乙個函式名就可以用來代表不同功能的函式,也就是」一名多用」。
運算子也可以過載。實際上,我們已經在不知不覺之中使用了運算子過載。例如,大。
家都。已習慣於用加法運算子」+」對整數、單精度數和雙精度數進行加法運算,如5+8,等,其實計算機對整數、單精度數和雙精度數的加法操作過程是很不相同的,但由於c++已經對運算子」+」進行了過載,所以就能適用於int,float,double型別的運算。
又如」《是c++的位運算中的位移運算子(左移),但在輸出操作中又是與流對。
象cout配合使用的流插入運算子,」>也是位移運算子(右移),但在輸入操作中又是與流物件。
cin配合使用的流提取運算子。這就是運算子過載(operator
overloading)。c++系統對」《和」>>進行了過載,使用者在不同的場合下使用它們時,作用是不同。
的。對」《和」>>的過載處理是放在標頭檔案stream中的。因此,如果要在程式中用」《和」>>作流插入運算子和流提取運算子,必須在本檔案模組中包含標頭檔案stream(當然還應當包括」using
namespace
std「)。
在c++中不能在程式中直接用運算子」+」對複數進行相加運算。使用者必須自己設法實現複數相加。例如使用者可以通過定義乙個專門的函式來實現複數相加。
運算子過載函式
5樓:洋代靈
&意思是取位址,在乙個函式中如果你取了傳入引數的位址就代表你可以通過函式來改變原來的變數,比如swap函式就可以寫成。
int swap(int &x, int &y)如果去掉了取位址之後我們發現swap即使執行了兩個變數也不會改變;
而當你的引數中包含了&,那麼程式會認為你將改變其中的內容,如果傳入的是常量(比如const型或者直接是數字或者字元),系統就會認為你想改變乙個常量的值,於是乎就會報錯了。只要去掉就可以了。
如果是出於速度和記憶體方面的考慮需要使用&,同時又不想改變其中的內容,就在前面加上const就好了,比如你這個就可以寫成。
6樓:網友
例如有乙個類a,他有乙個成員變數int data
現在有a x,y;
希望進行x+y的操作(具體操作是將data 的值相加),那麼就有下列三種過載運算子的寫法:
一、普通函式。
class a//建構函式。
int data;
a operator+(const a& a1,const a& a2)
二、友元函式。
class a//建構函式。
private: int data;//注意這個成員變成了私有。
friend a operator+(const a& a1,const a& a2);
a operator+(const a& a1,const a& a2)
三、a的成員函式(最常用)
class a//建構函式。
private: int data;
public:
a operator+(const a& a2) const};
as3 0中的按位移位運算子是怎麼用的
在下例中,整數 1 向左移 10 位 x 1 10按位左移位運算的結果是 1024。這是因為十進位制的 1 等於二進位制的 1,二進位制的 1 向左移 10 位是二進位制的 10000000000,而二進位制的 10000000000 就是十進位制的 1024 下例將 65535 轉換為 32 位整...
大秦過載鐵路是怎麼回事,大秦鐵路上還有客運列車嗎?
大秦鐵路自山西省大同市至河北省秦皇島市,縱貫山西 河北 北京 天津,全長653千公尺,是中國西煤東運的主要通道之一。大秦鐵路是中國新建的第一條雙線電氣化過載運煤專線,1992年底全線通車,2002年運量達到一億噸設計能力。為最大限度發揮大秦鐵路作用,有效緩解煤炭運輸緊張狀況,自2004年起,鐵道部對...
期貨 誰能給我講講期貨是怎麼回事
是現在進行買賣,在將來進行交收或交割的標的物,這個標的物可以是某種商品例如 農產品,也可以是金融工具,還可以是金融指標。交收 的日子可以是一星期之後,乙個月之後,三個月之後,甚至一年之後。市場最早萌芽於歐洲。提到 我們就不得不提到現貨了。一百多年前,在解決現貨交易的困惑中產生了 自誕生之後,在交易上...