類是從c語言中的結構體演變而來,結構體的成員變數也就演化成類的成員變數,這時類只能存放資料。為了在類內部操縱這些資料,增加了成員函式的功能。所謂成員函式就是在類的內部定義,用來操作類的成員變數的函式。隨後對成員變數和成員函式附上「私有」、「保護」和「公共」的訪問許可權,於是「類」便大致成型。事實上,c++中結構體的功能大致和類相當,也有了成員函式。「成員」是成員變數和成員函式的統稱。
類的出現帶動設計風格的巨大變化,與傳統設計方法相區別,稱之為「物件導向設計」。
「類」和結構體一樣,是一種自定義的資料型別,但不是基本型別。「例項」是用自己定義的「類」這個資料型別來定義的變數。這些乙個乙個的例項統稱「物件」。另外,「繼承」和「派生」是同一件事的不同說法,b類繼承了a類,也就是說a類派生了b類。
class 類名 //| }一般按習慣將private:定義部分放在緊靠類名下面,並且「private:」可以省略。「private:」下面定義的成員全是「私有」的,也就是只能在這個類的成員函式裡可以使用,外部(包括派生的子類)不能使用。「public:」下面定義的成員,所有地方都能使用。「protected:」下面定義的成員,在派生的子類中則相當於「public」,其它地方則相當於「private」。「建構函式」是類產生例項時被呼叫,進行初始化設定,是乙個特殊的成員函式,函式名與類名相同,沒有返回值。一般建構函式定義在「public:」下面,但有時為了阻止多個例項的產生而特意定義在「private:」或「protected:」下面。當初始化時沒有什麼需要設定時也可以不定義,編譯時會自動生成乙個預設的建構函式。建構函式的過載使得例項的生成靈活而且方便,預設的建構函式沒有引數,且是定義在「public:」下面的。
「析構函式」是類的例項被銷毀時呼叫,進行最後的處理,例如釋放動態分配的記憶體等。一般析構函式定義在「public:」下面,不需要時也可以不定義,編譯時會自動生成乙個預設的析構函式。析構函式的函式名與類名相同,前面有「~」返回值。
下面的例子演示建構函式和析構函式被呼叫的順序。
#include
using
namespace std;
classca~
ca()
void
seta
(int x)
void
print()}
;int
main()
執行結果:
建構函式:0
print:10
析構函式:10上面例子是將成員函式的定義和宣告全寫在類的定義體裡面,更好的程式設計風格是分開來寫,也就是類定義體裡面只寫成員變數和成員函式的宣告,而成員函式的定義則寫在類的定義體外。
這樣,類的定義體就可以移到「標頭檔案」中去。在外部定義時,成員函式名前面要加上「類名::」。
//==test.h==
classca;
//==test.cpp==
#include
#include
"test.h";
using
namespace std;
ca::
ca()
ca::~
ca()
void ca::
seta
(int x)
void ca::
print
()int
main()
執行結果:
建構函式:0
print:10
析構函式:10了解生成例項的三種方法的細微區別是很重要的:
注意:指標的成員用「->」,而不用「.」。
#include
#include
using
namespace std;
intmain()
執行結果:
c語言中文網 11
c++60分鐘入門教程 17
49
c 基礎 6 c 類與物件基礎
1 c 中的類可以定義與類名相同的特殊成員函式,這種與類名相同的成員函式叫做構 造函式2 沒有任何返回型別的宣告 3 一般情況下 c 編譯器會自動呼叫建構函式,在一些情況下則需要手工呼叫建構函式 析構函式定義及呼叫 1 c 中的類可以定義乙個特殊的成員函式清理物件,這個特殊的成員函式叫做析構函 數,...
C 類模板5分鐘入門
參考自 c 除了支援函式模板,還支援類模板 class template 函式模板中定義的型別引數可以用在函式宣告和函式定義中,類模板中定義的型別引數可以用在類宣告和類實現中。類模板的目的同樣是將資料的型別引數化。宣告類模板的語法為 templateclass 類名 類模板和函式模板都是以 temp...
C語言快速入門教程之10分鐘快速掌握資料型別
c中的資料型別是指用於宣告不同型別的變數或函式的擴充套件系統。變數的型別決定了它在儲存中占用的空間大小以及如何解釋儲存的位模式。c中的型別可分為以下幾類 陣列型別和結構型別統稱為聚合型別。函式的型別指定函式返回值的型別。我們將在下一節中看到基本型別,其他型別將在後面的內容中介紹。整數型別 下表提供了...