1. 程式人生 > >C++知識整理四

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