前言
哈哈哈,小編又來了!
重點
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++的總結將會告一段落,提一點學習的建議吧:看書的時候一定要看書上的代碼,對於理解文本性的內容很有幫助,希望明年的現在,大家都有一個好的成果。