運算子過載
不能過載的運算子:
. :: .* ?: 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 預定義中的運算子的操作物件只侷限於基本的內建資料型別,但是對於我們自定義的型別 類 是沒有辦法操作的。但是大多時候我們需要對我們定義的型別進行類似的運算...