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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章