Essensial C 基於物件的程式設計風格

2021-10-19 03:48:26 字數 2080 閱讀 1098

c++提供了建構函式來處理物件的初始化。建構函式是一種特殊的成員函式,與其他成員函式不同,建構函式不需要使用者來呼叫它,而是建立物件時自動執行。

建構函式的函式名稱必須與類名相同。建構函式沒有返回值型別,不返回任何值。

一組過載的建構函式

class

triangular

;

類物件被建立時,編譯器會自動根據獲得的引數,挑選出應被呼叫的建構函式:

triangular(int len =1, int bp=1);同樣也是預設建構函式,為每個引數提供了預設值。

在 c/c++ 語言中,const關鍵字是一種修飾符。所謂「修飾符」,就是在編譯器進行編譯的過程中,給編譯器一些「要求」或「提示」,但修飾符本身,並不產生任何實際**。就 const 修飾符而言,它用來告訴編譯器,被修飾的這些東西,具有「唯讀」的特點。在編譯的過程中,一旦我們的**試圖去改變這些東西,編譯器就應該給出錯誤提示。

常見const的用法

const 變數,指的是此變數的值是唯讀的,不應該被改變,const 變數必須被初始化;

const 類物件 不能改變 const 類物件的任何成員變數,const類成員不可以呼叫non-const成員函式;

class

cdebugmodule;~

cdebugmodule()

;public

:int m_debuglevel;

public

:void

setdebuglevel

(int debuglevel)

;void

printdebuglevel

(void);

void

printdebuglevel_const

(void

)const

;// const 類成員函式};

intmain

(int argc,

char

*ar**)

指向const 變數的指標

指的是乙個指標指向乙個const變數的位址。

const

int debuglevel =10;

const

int loglevel =10;

const

int*p =

&debuglevel;

p =&loglevel;

// 正常,指標的指向可以改變

*p =10;

// 編譯錯誤,指標指向的位置是唯讀的

const 指標 指標的指向一經確定,不能改變。指標指向的內容,可以改變。

int loglevel =10;

int logid =0;

int*

const p =

&loglevel;

int*

const q;

// 編譯錯誤,未初始化 const 變數(這個錯誤是否報告,和所用的編譯器有關)

*p =5;

// 正常,const指標指向內容可以改變

p =&logid // 編譯錯誤,const指標自身內容(指向)不能改變

const 變數作為函式引數

靜態成員在類的所有物件中是共享的。如果不存在其他的初始化語句,在建立第乙個物件時,所有的靜態資料都會被初始化為零。我們不能把靜態成員的初始化放置在類的定義中,但是可以在類的外部通過使用範圍解析運算子 :: 來重新宣告靜態變數從而對它進行初始化。

classa;

int a::objectcount=

0;

靜態成員函式

靜態成員函式即使在類物件不存在的情況下也能被呼叫,靜態函式只要使用類名加範圍解析運算子 :: 就可以訪問。

靜態成員函式沒有this指標,只能訪問靜態成員資料、其他靜態成員函式和類外部的其他函式。

參考文件:

c++ 建構函式總結

c/c++中const修飾符的用法總結

基於物件的程式設計

物件就是類的例項。乙個類與自身具有同樣名稱的成員函式叫做建構函式。沒有引數的建構函式稱為預設建構函式。雙冒號 是作用域操作符。函式過載 同樣函式名稱能夠用不同形式引數定義多次。引數是通過值進行傳遞的。內聯函式 減小開銷,新增效率。環境變數 include includeusing namespace...

物件導向和基於物件的區別

很多人沒有區分 物件導向 和 基於物件 兩個不同的概念。物件導向的三大特點 封裝,繼承,多型 卻一不可。通常 基於物件 是使用物件,但是無法利用 現有的物件模板產生新的物件型別,繼而產生新的物件,也就是說 基於物件 沒有繼承的特點。而 多型 表示為父類型別的子類物件例項,沒有了繼承的概念也 就無從談...

物件導向和基於物件的區別

以我現在的認知,只是知道的是vb是基於物件的程式語言 c 是物件導向的程式語言。那我們如何區分什麼是基於物件,什麼是物件導向?根據上述的兩種程式語言我們就可以知道 物件導向 和 基於物件 是兩個不同的概念了吧!基於物件是使用物件,意味著它們有像c 的結構加函式這樣的物件,然而這只是到達物件導向語言的...