c++類成員函數、訪問修飾符、構析造函數、拷貝構造函數、友元函數、內聯函數、this指針、指向類的指針、靜態成員

概念 描述
類成員函數 類的成員函數是指那些把定義和原型寫在類定義內部的函數,就像類定義中的其他變量一樣。
類訪問修飾符 類成員可以被定義爲 public、private 或 protected。默認情況下是定義爲 private。
構造函數 & 析構函數 類的構造函數是一種特殊的函數,在創建一個新的對象時調用。類的析構函數也是一種特殊的函數,在刪除所創建的對象時調用。
C++ 拷貝構造函數 拷貝構造函數,是一種特殊的構造函數,它在創建對象時,是使用同一類中之前創建的對象來初始化新創建的對象。
C++ 友元函數 友元函數可以訪問類的 private 和 protected 成員。
C++ 內聯函數 通過內聯函數,編譯器試圖在調用函數的地方擴展函數體中的代碼。
C++ 中的 this 指針 每個對象都有一個特殊的指針 this,它指向對象本身。
C++ 中指向類的指針 指向類的指針方式如同指向結構的指針。實際上,類可以看成是一個帶有函數的結構。
C++ 類的靜態成員 類的數據成員和函數成員都可以被聲明爲靜態的。

 

1、拷貝構造函數是一種特殊的構造函數,它在創建對象時,是使用同一類中之前創建的對象來初始化新創建的對象。拷貝構造函數通常用於:

  • 通過使用另一個同類型的對象來初始化新創建的對象。

  • 複製對象把它作爲參數傳遞給函數。

  • 複製對象,並從函數返回這個對象。

如果在類中沒有定義拷貝構造函數,編譯器會自行定義一個。如果類帶有指針變量,並有動態內存分配,則它必須有一個拷貝構造函數。形式如下:

classname (const classname &obj) {
   // 構造函數的主體
}

2、友元函數

類的友元函數是定義在類外部,但有權訪問類的所有私有(private)成員和保護(protected)成員。儘管友元函數的原型有在類的定義中出現過,但是友元函數並不是成員函數。

友元可以是一個函數,該函數被稱爲友元函數;友元也可以是一個類,該類被稱爲友元類,在這種情況下,整個類及其所有成員都是友元。

3、靜態成員

靜態成員包括靜態變量與靜態函數。我們可以使用 static 關鍵字來把類成員定義爲靜態的。當我們聲明類的成員爲靜態時,這意味着無論創建多少個類的對象,靜態成員都只有一個副本。靜態成員在類的所有對象中是共享的。

(1)如果不存在其他的初始化語句,在創建第一個對象時,所有的靜態數據都會被初始化爲零。我們不能把靜態成員的初始化放置在類的定義中,但是可以在類的外部通過使用範圍解析運算符 :: 來重新聲明靜態變量從而對它進行初始化。

(2)如果把函數成員聲明爲靜態的,就可以把函數與類的任何特定對象獨立開來。靜態成員函數即使在類對象不存在的情況下也能被調用,靜態函數只要使用類名加範圍解析運算符 :: 就可以訪問。

靜態成員函數只能訪問靜態成員數據、其他靜態成員函數和類外部的其他函數。

靜態成員函數有一個類範圍,他們不能訪問類的 this 指針。您可以使用靜態成員函數來判斷類的某些對象是否已被創建。

靜態成員函數與普通成員函數的區別:

  • 靜態成員函數沒有 this 指針,只能訪問靜態成員(包括靜態成員變量和靜態成員函數)。
  • 普通成員函數有 this 指針,可以訪問類中的任意成員;而靜態成員函數沒有 this 指針。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章