C++知識整理四
前言
哈哈哈,小編又來了!
重點
1.靜態成員
如果類的資料成員或成員函式使用關鍵字static進行修飾,這樣的成員稱為靜態資料成員或靜態成員函式,統稱為靜態成員。
如果在類中僅對靜態資料成員進行宣告,則必須在檔案作用域的某個地方進行定義。在進行初始化時,必須進行成員名限定。例如:
class Test {
static int x; //靜態資料成員
}
int Test:: x=25; //初始化靜態資料成員
注意:1.靜態成員是類的成員,不是物件的成員
2.靜態成員函式不能直接訪問非靜態函式
2.友元函式
友元函式可以存取私有成員、公有成員和保護成員。
分享一下我們的小總結:friend寫在誰裡面,誰就可以被訪問;friend寫在Two裡面,Two就可以被訪問,One是Two的友元函式,Two裡面的函式名是One裡的。
友元函式不具有傳遞性和交換性,同時也不是類的成員函式。
3.const物件
常量成員包括常量資料成員,靜態常資料成員和常引用。靜態常資料成員仍保留靜態成員特徵,需要在類外進行初始化,常資料成員和常引用只能通過初始化列表來獲得初值。
class Base{ private: int x; const int a; //常資料成員只能通過初始化列表來獲得初值 static const int b; //靜態常資料成員 const int& r; //常引用只能通過初始化列表來獲得初值 } const int Base::b=25; //靜態常資料成員在類外進行初始化 Base::Base(int i,int j):x(i),a(j),r(x) {} //初始化列表
4.建構函式(解構函式)是不被繼承的,所以一個派生類只能呼叫他的直接基類的建構函式。當定義派生類的一個物件時,首先呼叫基類的建構函式,對基類成員進行初始化,然後執行派生類的建構函式。解構函式的執行順序和執行建構函式時的順序正好相反。
5.派生
1)公有派生:
基類 | 派生類 |
---|---|
公有 | 公有 |
保護 | 保護 |
不可訪問和私有 | 不可訪問 |
2)私有派生:
基類 | 派生類 |
---|---|
公有 | 私有 |
保護 | 私有 |
不可訪問和私有 | 不可訪問 |
3)保護派生:
基類 | 派生類 |
---|---|
公有 | 保護 |
保護 | 私有 |
不可訪問和私有 | 不可訪問 |
6.向量
向量中儲存元素的多少可以在執行中根據需要動態的增長或縮小。
vector <type> name; //定義type的向量空表
vector <type> name(length); //定義具有length個type的向量,元素初始化為0
vector <type> name(length,a); //定義具有length個type的向量,元素初始化為a
vector <type> name1(name); //使用已定義的向量name構造向量name1
用iterator
宣告向量的正向泛型指標的一般形式為:
vector <type> :: iterator 泛型指標名;
宣告逆向泛型指標使用reverse _ iterator
,宣告的方法如下:
vector <資料型別> :: reverse _ iterator 指標名;
7.訪問向量容量資訊的方法
size():返回當前向量中已經存放的物件的個數
max_size():返回向量可以容納最多物件的個數
capacity():返回無需再次分配記憶體就能容納的物件個數。當儲存空間已滿,又增加元素的時候,在原來的基礎上自動翻倍擴充
max_size()>=capacity()>=size()
empty():當前向量為空時,返回true值
8.純虛擬函式
一個類可以說明多個純虛擬函式,包含有純虛擬函式的類稱為抽象類。從一個抽象類派生的類必須提供純虛擬函式的實現程式碼,或在該派生類中仍將它說明為純虛擬函式。
virtual void area()=0; //純虛擬函式
virtual void area() { } //空的虛擬函式
9.運算子過載
運算子過載的實質就是函式過載
類運算子:作為類的成員函式的過載運算子;友元運算子:作為類的友元過載運算子
. :: * ?: 這四個不可以過載
經過過載,運算子不改變原有的優先順序,運算元數目和結合性
類運算子比友元運算子少一個引數,因為成員函式具有this指標
總結
C++的總結將會告一段落,提一點學習的建議吧:看書的時候一定要看書上的程式碼,對於理解文字性的內容很有幫助,希望明年的現在,大家都有一個好的成果。