-
轉存
查看全部 -
轉存
查看全部 -
轉存
查看全部 -
轉存
查看全部 -
標準模板庫(STL):
向量vector->對數組的封裝? ? 元素
迭代器iterator:vector<變量類型>::iterator 迭代器名 = 向量名.迭代器位置
鏈表list? ? 節點? 數據插入速度快? 不能通過下標訪問每一個元素
映射map
pair,insert
查看全部 -
? 關鍵字:template typename class
變量類型作為模板參數:
template <class T>
template<typename T>
變量作為模板參數:
template <變量類型 變量名>
多參數函數模板
template<typename T, typename C>
typename和class可以混用,變量類型模板和變量模板可以一起用
查看全部 -
“-”一元運算符重載:
成員函數重載:類名& operator-();
友元函數重載:friend 類名& operator-(類名 &對象);
“++”一元運算符重載:
前置++符號重載:類名& operator++();
后置++符號重載:類名 operator++(int);
查看全部 -
c++標準模板庫:
STL:標準模板庫
STL:Standard Template Lib
1.vector 向量 (本質:對數組的封裝)
? ? 特點:讀取能在常數時間完成
empty()返回值類型為bool類型,為空返回ture,非空返回false;
2、迭代器:iterator?
citer為vector<string>::iterator 型的變量;?
3、list:鏈表模板
特點:數據插入速度快
每個節點:數據域&指針部分
雙鏈表:既可以從頭找到尾,也可尾到頭。
插入操作,向量比鏈表較復雜
4、映射:map
查看全部 -
函數模板的關鍵字:template class typename(其中后兩者相同,class并不是類的定義)
?函數模板: ?類型模板 template<class T> T display(T a,T b ) { } ;調用的時候: display(100,2);//自動判斷或者 display<int>(100,2); ?
變量作為參數
多參數函數模板?
?
定義出函數模板時,函數模板并不是相互重載的關系,因為在內存中只是將函數模板定義出來,并不能在內存中產生任何代碼,只有在使用時才產生相應的函數代碼,此時這些函數相互間才能稱得上重載關系。
(改自皆凡人)
查看全部 -
1、二元運算符+重載:友元函數重載、成員函數重載
2、成員函數重載:
注釋意思是coor2作為operator的參數,this指針為coor1的地址;
3、+號友元函數重載:?參數中可以不加const,但加了之后能確保運算過程參數不發生修改,加const是一致規范;注意與成員函數重載的運算區別;
4、<<友元函數重載:
由此也看出cout是ostream的一個對象; 輸出運算符不能使用成員函數重載,因成員函數重載只傳入第二個加數,且this指針指向本類,而運用輸出運算符重載必須傳入一個ostream的對象,故無法使用成員函數重載;
5、索引運算符只能作為成員函數重載,因為友元函數重載的第一個形參可以是this指針也可以是其他的值,但是對于索引運算符來說,它的第一個形參必須是this指針。
查看全部 -
1、靜態數據成員并不依賴于對象實例化,且不在構造函數中初始化,而是單獨進行初始化,格式為類型+類名::+數據名=初始值,在對象實例化前就存在于內存中;而普通數據成員則是實例化后才存在于內存中;
2、靜態數據成員及成員函數可不需實例化后調用;
3、 從this指針談靜態成員函數:調用靜態成員函數和靜態數據成員時,并不與對象相關,只是與類相關使用靜態成員函數,并不會傳入一個隱形的this指針,并不知道調用的數據成員是哪個對象的數據成員。所以在靜態的成員函數中無法調用非靜態的數據成員及函數 ;可以在靜態的成員函數中調用靜態的數據成員(改自人生贏家daru君)
查看全部 -
1、友元全局函數即將一個全局函數引用至類中,該全局函數可直接訪問該類實例化對象中的私有及保護數據成員,格式為friend+函數類型+函數名(參數)+(類引用或指針);
2、友元成員函數即將另一個類中的成員函數引用至本類中,另一個類中的成員函數可直接訪問本類中的數據成員;格式為friend+類名::+函數類型+函數名(參數);
查看全部
舉報