C 初級 類與物件(1)

2021-10-05 00:08:39 字數 2870 閱讀 6592

1.類的兩種定義方式

(1)將宣告和定義全部放在類體中。注意:成員函式在類內定義,編譯器有可能將其當做內聯函式處理。

class

person

};

(2)宣告放在.hpp檔案中,定義放在.cpp檔案中

.hpp(宣告)

public

:void

display()

;

.cpp(定義)

void person::

display()

2.類的訪問限定符

(1)public修飾的成員在類外可以直接被訪問

(2)protected和private修飾的成員在類外不可以被直接訪問

(3)class的預設訪問許可權為public,private和struct

(4)訪問許可權作用域:從該訪問限定符出現的位置直到下乙個訪問限定符出現為止

3.封裝:將資料和運算元據的方法進行有機結合,隱藏物件的屬性和實現細節,僅對外公開介面和物件進行互動。

4.在類體外定義成員,需要使用::作用域解析符指明成員屬於哪個類域。

5.類不占用空間,例項化物件才占用空間。

6.類的大小,實際為該類中成員變數之和。

#include

"date.hpp"

#include

using

namespace std;

intmain()

#pragma once

#include

using

namespace std;

class

date

void

display()

};

6.this指標

this指標是編譯器為每個成員函式增加的乙個隱藏的指標引數,讓該指標指向當前物件(函式執行時呼叫該函式的物件),函式體中所有成員變數的操作,都是通過該指標去訪問。

(1)指標型別:類型別* const

(2)只能在成員函式的內部使用

(3)this指標實質上是乙個成員函式的形參,是物件呼叫成員函式時,將物件位址作為實參傳遞給this形參,所以物件中不儲存this指標。

(4)this指標是成員函式第乙個隱含的指標形參,一般情況下有編譯器通過ecx暫存器自動傳遞,不需要使用者傳遞。

void

display

(date*

const

this

)

7.建構函式:特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,從而保證每個資料成員都有乙個合適的初始值,並且在物件的生命週期內只呼叫一次。用來初始化物件。

(1)函式名與類名相同

(2)無返回值

(3)建構函式可以過載

(4)當物件例項化時編譯器會自動呼叫對應的建構函式

#pragma once

#include

using

namespace std;

class

date

//無參構造

date()

void

display()

;};

#include

"date.hpp"

#include

using

namespace std;

void date::

display()

intmain()

注意:

(1)假若類中沒有顯式定義建構函式,則編譯器自動生成無參的預設建構函式,但是一旦具有顯式定義,編譯器將不再生成。

(2)無參構造和全預設的建構函式都被稱為預設建構函式,並且預設建構函式只允許有乙個。無參構造和全預設的建構函式都是預設成員函式。

(3)編譯器生成的預設建構函式會對自定義型別成員呼叫它的預設成員函式。

#include

"date.hpp"

#include

using

namespace std;

void date::

display()

intmain()

#pragma once

#include

using

namespace std;

class

time};

class

date

;

8.建構函式:特殊的成員函式

(1)物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作

(2)析構函式名為類名前加上字元~

(3)無引數,無返回值

(4)乙個類有且僅有乙個析構函式,若未顯式定義,系統會自動生成預設的析構函式

(5)主要完成開闢空間的物件的銷毀,其餘由編譯器完成銷毀工作。

#include

"date.hpp"

#include

using

namespace std;

intmain()

#pragma once

#include

#include

#include

using

namespace std;

class

string

~string()

};class

person

;

c 類和物件(初級)

類 就是類別,它是乙個抽象的概念,是一種事物的總稱 物件 經過例項化後就是物件 struct和class的區別 類的關鍵字是class,class與c語言中我們學的struct結構體差不多。但是他們也是有區別的 1 struct結構體中只能定義變數型別,而class類中不僅可以定義變數 物件 也可以...

C 類與物件1

我們都知道c語言是一門面向過程語言,而c 是一門物件導向的語言,那麼何為面向過程 物件導向呢?面向過程就是關注的是過程,分析求解問題的步驟,通過呼叫函式逐步解決問題,而物件導向關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成。在c語言中我們用關鍵字struct來定義結構體,結構體只能定...

類與物件(1)

類與物件 1 主函式 public class text 這裡定義乙個人的類 class person public void setage int age 建構函式做初始化 public person 當沒有建構函式時,計算機會預設乙個無引數建構函式 當程式設計師寫了乙個有引數的建構函式,系統就不...