C 類的基礎知識

2021-09-11 05:17:52 字數 2595 閱讀 4951

一、類的介紹

類是屬於使用者自定義的資料型別, 並且該型別的資料具有一定的行為能力, 也就是類中說描述的方法。通常來說, 乙個類的定義包含兩部分的內容, 一是該類的屬性, 另一部分是它所擁有的方法。

二、

1、類宣告

class date;

在宣告之後,定義之前,只知道date是乙個類名,但不知道包含哪些成員。只能以有限方式使用它,不能定義該型別的物件,只能用於定義指向該型別的指標或引用,宣告(不是定義)使用該型別作為形參型別或返回型別的函式。

void test1(date& a){};

void test1(date* a){};

2、類定義

在建立類的物件之前,必須完整的定義該類,而不只是宣告類。所以,類不能具有自身型別的資料成員,但可以包含指向本類的指標或引用。

class xx//xx為類名

;//一般將類的資料成員設為私有的,以實現隱藏和封裝

而將類的成員方法設為公有的

①. 類名 需要遵循一般的命名規則(駝峰式命名);

②. public 與 private 為屬性/方法限制的關鍵字, private 表示該部分內容是私密的, 不能被外部所訪問或呼叫, 只能被本類內部訪問; 而 public 表示公開的屬性和方法, 外界可以直接訪問或者呼叫。

一般來說類的屬性成員都應設定為private, public只留給那些被外界用來呼叫的函式介面, 但這並非是強制規定, 可以根據需要進行調整;

③. 結束部分的分號不能省略。

注:類的成員預設是私有的,而結構體的成員預設是公有的。
3、隱含的this指標

成員函式具有乙個附加的隱含形參,即 this指標,它由編譯器隱含地定義。成員函式的函式體可以顯式使用 this 指標。

4、使用this指標

當我們需要將乙個物件作為整體引用而不是引用物件的乙個成員時。最常見的情況是在這樣的函式中使用 this:該函式返回對呼叫該函式的物件的引用。

三、建構函式

建構函式的名字與類名相同,沒有返回型別,乙個類可以通過函式過載定多個建構函式,建構函式的引數列表中含有乙個或多個需要進行初始化的資料成員。

date:: date(int y,int m,int d)

或者這樣定義

date:: date(int y,int m,int d):year(y),month(m),day(d){}//引數列表的形式

2.預設建構函式

預設建構函式是在未提供初始值時進行物件初始化的建構函式。

當乙個類沒有提供任何的建構函式時,編譯器會隱式地定義乙個預設建構函式。以date類為例,編譯器提供的預設建構函式的形式應該是如下的

date() {};
當建構函式中所有的引數都有預設值時,這個建構函式也是預設建構函式。例如:

date:: date(int y,int m,int d)

但是,當顯式地定義了建構函式後,編譯器便不會再提供預設建構函式。

成員被初始化的次序就是定義成員的次序,跟初始化列表中的順序無關。
4、類物件的成員的初始化

在類a的建構函式初始化列表中沒有顯式提及的每個成員,使用與初始化變數相同的規則來進行初始化。

類型別的資料成員,執行該型別的預設建構函式來初始化。

內建或復合型別的成員的初始值依賴於該類物件的作用域:在區域性作用域中不被初始化,在全域性作用域中被初始化為0。

四、複製建構函式

1、定義: 複製建構函式是一種特殊建構函式,只有1個形參,該形參(常用 const &修飾)是對該類型別的引用。

2、何時使用複製建構函式

兩種初始化的形式

對於內建型別,例如int, double等,直接初始化和複製初始化沒有區別。 

對於類型別:

直接初始化直接呼叫與實參匹配的建構函式;

複製初始化先使用指定建構函式建立乙個臨時物件

然後用複製建構函式將那個臨時物件複製到正在建立的物件。

直接初始化比複製初始化更快。

五、析構函式

1.定義:建立物件時系統會自動呼叫建構函式進行初始化工作,同樣,銷毀物件時系統也會自動呼叫乙個函式來進行清理工作,例如釋放分配的記憶體、關閉開啟的檔案等,這個函式就是析構函式。(乙個類中有且只有乙個析構函式)

2.特點:

4.首先介紹c++建立物件的三種不同形式

前兩個都是在棧中分配記憶體,在棧中記憶體由系統自動的去分配和釋放

而使用new建立的指標物件是在堆中分配記憶體

當不需要該物件時,需要我們手動的去釋放否則會造成記憶體洩漏。

C 類 基礎知識

目錄3.2 複製建構函式 3.3 析構函式 4.類組合 class class name功能 用於在建立類時給類設定初值 形式note 在宣告中定義了預設引數時,實現中不能再指定預設引數。下面 執行會報錯 void func int x 0 void func int x 0 呼叫時機 預設建構函式...

C 類的基礎知識

類是物件導向程式設計的核心,是通過抽象資料型別方法實現的一種使用者自定義資料型別,它同時包含了資料和對資料進行操作的函式。利用類可以實現資料的封裝和隱藏。類是對某一類物件的抽象,而物件是某一種類的例項。類的定義 類的定義可以分為兩部分 說明部分和實現部分。說明部分說明類中包含的資料成員和成員函式,實...

C 類的基礎知識

類通常包括兩部分 類的內部實現和類的使用方式。當我們建立乙個類時,我們需要考慮去怎麼實現,使用的時候不需要考慮細節,不用想怎麼去實現。首先我們給出乙個簡單的類 class test int getval private int v int test getval 類裡面包含了量種不同的東語法,乙個是...