C 類的簡要理解(一)

2021-09-27 10:34:52 字數 3867 閱讀 5760

類建構函式與析構函式

類的析構函式

c++ 在 c 語言的基礎上增加了物件導向程式設計,c++ 支援物件導向程式設計。類是 c++ 的核心特性,通常被稱為使用者定義的型別。

類用於指定物件的形式,它包含了資料表示法和用於處理資料的方法。類中的資料和方法稱為類的成員。函式在乙個類被稱為類的成員。

c++ 類定義

定義乙個類,本質上是定義乙個資料型別的藍圖。這實際上並沒有定義任何資料,但它定義了類的名稱意味著什麼,也就是說,它定義了類的物件包括了什麼,以及可以在這個物件上執行哪些操作。

類定義是以關鍵字 class 開頭,後跟類的名稱。類的主體是包含在一對花括號中。類定義後必須跟著乙個分號或乙個宣告列表。例如,我們使用關鍵字 class 定義 box 資料型別,如下所示:

class box

;關鍵字 public 確定了類成員的訪問屬性。在類物件作用域內,公共成員在類的外部是可訪問的。您也可以指定類的成員為 private 或 protected,這個我們稍後會進行講解。

定義 c++ 物件

類提供了物件的藍圖,所以基本上,物件是根據類來建立的。宣告類的物件,就像宣告基本型別的變數一樣。下面的語句宣告了類 box 的兩個物件:

box box1;          // 宣告 box1,型別為 box

box box2; // 宣告 box2,型別為 box

物件 box1 和 box2 都有它們各自的資料成員。

訪問資料成員

類的物件的公共資料成員可以使用直接成員訪問運算子 (.) 來訪問。為了更好地理解這些概念,讓我們嘗試一下下面的例項:

#include using namespace std;

class box

;int main( )

;

成員函式可以定義在類定義內部,或者單獨使用範圍解析運算子 :: 來定義。在類定義中定義的成員函式把函式宣告為內聯的,即便沒有使用 inline 識別符號。所以您可以按照如下方式定義 volume() 函式:

class box

};

您也可以在類的外部使用範圍解析運算子 :: 定義該函式,如下所示:

double box::getvolume(void)

box mybox;          // 建立乙個物件
mybox.getvolume(); // 呼叫該物件的成員函式

讓我們使用上面提到的概念來設定和獲取類中不同的成員的值:

#include using namespace std;

class box

;// 成員函式定義

double box::getvolume(void)

void box::setlength( double len )

void box::setbreadth( double bre )

void box::setheight( double hei )

// 程式的主函式

int main( )

;

公有(public)成員

公有成員在程式中類的外部是可訪問的。您可以不使用任何成員函式來設定和獲取公有變數的值,如下所示:

#include using namespace std;

class line;

// 成員函式定義

double line::getlength(void)

void line::setlength( double len )

// 程式的主函式

int main( )

;

#include using namespace std;

class box;

// 成員函式定義

double box::getwidth(void)

void box::setwidth( double wid )

// 程式的主函式

int main( );

class smallbox:box // smallbox 是派生類;

// 子類的成員函式

double smallbox::getsmallwidth(void)

void smallbox::setsmallwidth( double wid )

// 程式的主函式

int main( )

當上面的**被編譯和執行時,它會產生下列結果:

width of box : 5
類建構函式與析構函式

類的建構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。

建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。

下面的例項有助於更好地理解建構函式的概念:

#include

using namespace std;

class line;

// 成員函式定義,包括建構函式

line::line(void)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( );

// 成員函式定義,包括建構函式

line::line( double len)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( )

上面的語法等同於如下語法:

line::line( double len)

假設有乙個類 c,具有多個字段 x、y、z 等需要進行初始化,同理地,您可以使用上面的語法,只需要在不同的字段使用逗號進行分隔,如下所示:

c::c( double a, double b, double c): x(a), y(b), z(c)

類的析構函式

類的析構函式是類的一種特殊的成員函式,它會在每次刪除所建立的物件時執行。

析構函式的名稱與類的名稱是完全相同的,只是在前面加了個波浪號(~)作為字首,它不會返回任何值,也不能帶有任何引數。析構函式有助於在跳出程式(比如關閉檔案、釋放記憶體等)前釋放資源。

下面的例項有助於更好地理解析構函式的概念:

#include using namespace std;

class line;

// 成員函式定義,包括建構函式

line::line(void)

line::~line(void)

void line::setlength( double len )

double line::getlength( void )

// 程式的主函式

int main( )

{ line line;

// 設定長度

line.setlength(6.0);

cout << "length of line : " << line.getlength() 《當上面的**被編譯和執行時,它會產生下列結果:

object is being created

length of line : 6

object is being deleted

C 類和物件的簡要小結

c private 私有 類 由類和友元函式訪問,也就是由類物件中的public中的成員函式訪問private,不能被子類 派生類 訪問 protected 被保護 類,可以由子類的成員函式訪問父類 派生類 的protected 成員函式定義 void box setwidth double wid...

C 類的理解 一) 類的初識

一 類的意義,以及類與物件 類的內容比較多,但類是物件導向的基礎,所謂物件導向 object 其實就是一種更高層次的模組化,也稱為封裝。c語言中,稍微複雜點的資料結構都是用結構體來寫的,結構體本質上就是把一些相關的資訊打包儲存,比如貓 struct cat 這樣我們通過鍵盤輸入很多貓的資訊就可以用結...

關於各種編碼的簡要理解

gb2312 兩個大於127的字元連在一起時,就表示乙個漢字。還重新編碼了acsii,於是被重新編碼的兩個位元組acsii就是常說的 全形 字元,而原來127以下的那些就叫做 半形 字元。gbk 只要第乙個位元組大於127,就固定表示這是乙個漢字的開始,gbk包括了gb2312的所有內容,同時又增加...