c++程式語言特點

才智咖 人氣:5.34K

C語言是1972年由美國貝爾實驗室的hie研製成功的。它不是為初學者設計的,而是為計算機專業人員設計的。下面是小編蒐集的c++程式語言特點,希望大家認真閱讀!

c++程式語言特點

1. C++記憶體可分為以下區域:

全域性/靜態資料區

常量資料區(其中的資料不能被修改)

程式碼區

備註:全域性/靜態區,常量資料區實際上都在程序的資料區中。

2.堆和棧上分配記憶體的'效能比較:

(1) 棧上的記憶體是系統自動分配的,不需要使用者主動分配和釋放;

(2) 棧上分配的記憶體效率比較高(不需要經過堆管理器分配,一系列查詢空閒堆的邏輯);

(3) 棧上分配的記憶體,是連續的,不會導致記憶體碎片。

3. 虛擬函式表指標

虛擬函式表的指標,佔據類物件記憶體最開始的4個位元組。

(1)存放位置:

類物件開始的4個位元組存放的是虛擬函式表的指標,而虛擬函式表本身放在常量區。

(2)建立時機:

在物件建立時,建構函式中會呼叫編譯器在建構函式內部插入的初始化程式碼,來初始化虛擬函式指標,使其指向正確的虛擬函式表。

(這就解釋了為什麼建構函式不能是虛擬函式的問題)

4. this指標

類的非靜態成員函式,都會預設的傳this指標作為引數,以便在函式內部可以通過this指標訪問相應的類物件。

在進入函式體前建立並傳參,在函式返回時銷燬。

5. 類物件的建立過程

首先,申請該物件對應的記憶體;

其次,對類物件進行初始化,即呼叫類的建構函式。包括兩個步驟:執行初始化列表;執行建構函式體。

注意:常量和引用型別的變數,必須在初始化列表中進行初始化。

6. 行內函數的宣告

行內函數宣告有兩種方式,通常我們只知道第一種:

(1)顯式宣告:用“inline”關鍵字宣告;

(2)隱式宣告:在類內宣告成員函式時,同時提供其函式體實現,這時候函式會被定義成行內函數,不需要“inline”關鍵字宣告。

例如:

Class Student

{

public:

String GetName() { return name; }

}

行內函數的優點:

(1) 避免一般函式呼叫的引數壓棧,棧幀開闢與回收,暫存器儲存與恢復等開銷;

(2) 由於編譯時函式程式碼是完全展開的,編譯器可以對呼叫函式處的程式碼做更深入的優化。

缺點:多處呼叫,且程式碼量較大的時候,會因為展開過多重複程式碼導致目標程式變大。

TAGS:程式語言