運算子過載與STL學習總結

2021-08-20 07:16:59 字數 1640 閱讀 3112

運算子過載

不能過載的運算子:

. :: .* ?: sizeof

運算子過載函式可以過載為成員函式和友元函式兩種。

ⅰ:函式過載運算子:

型別 operator運算子(參數列);

返回型別 類名::operator +(參數列){}

ⅱ:友元過載運算子:

friend類名 operator +(參數列);

類名operator +(參數列){}

成員運算子函式與友元運算子函式的比較:

1) 成員函式運算子函式比友元函式運算子少帶乙個引數(後置的++/--需要增加乙個形參)

2) 雙目運算子(運算子對兩個物件操作)一般可以被過載為友元運算子函式或成員運算子函式,但當操作型別不相同時,必須使用友元函式。

注意:一:過載賦值運算子=用於物件資料的複製  只能用成員函式過載

類名 & 類名 ::operator = (類名);

二:過載運算子、()、=、->僅能用成員函式過載

運算子用於訪問資料物件的元素

()運算子用於函式呼叫

樣例:過載()

#include using namespace std;

class pingf

;int pingf::operator()(int x,int y)

int main()

point (int x1,int y1)

friend ostream &operator <<(ostream & out,point &p);

friend istream &operator >>(istream & in,point &p);

};istream &operator >>(istream &in,point &p)

ostream &operator <<(ostream &out,point &p)

cout << "size: " << a.size() << endl;

a.pop_back();

a[0] = 1;

cout << "size: " << a.size() << endl;

for (int i = 0; i < (int)a.size(); ++i)

cout << endl;

sort(a.begin(), a.end());

cout << "size: " << a.size() << endl;

for (int i = 0; i < (int)a.size(); ++i)

cout << endl;

a.clear();

cout << "size: " << a.size() << endl;

return 0;

}

心得體會:

stl容器操作內容較多,但常用到的東西較少。

其中很多內容並沒有深入理解,等用stl寫出東西來再貼上**。

過載運算子與STL總結

運算子過載 1.用成員函式過載運算子 class x 例如 過載 使複數相加 include using namespace std class complex 複數類 定義初始化表初始化complex類 complex double r,double i real r imag i 宣告成員函式,...

運算子過載及STL總結

運算子過載 要點 什麼是運算子過載,其意義何在?以成員函式的形式進行過載 通過友元函式實現過載 過載 1.明確目標 為什麼要進行運算子過載?int x,y y x y 表示兩個整數相加,很簡潔。但是,兩個字串合併 char x 20 y 20 strcat x,y 表達起來就不如 y x y 那樣直...

運算子過載和STL部分的學習總結

在學習類的部分學習完後,我們進行了運算子過載與stl部分的學習。通過這種方式,來進行這部分的總結與複習。一.運算子過載 1.為什麼要過載運算子 c 預定義中的運算子的操作物件只侷限於基本的內建資料型別,但是對於我們自定義的型別 類 是沒有辦法操作的。但是大多時候我們需要對我們定義的型別進行類似的運算...