C++複習(第一節)知識點總結

1.程序中使用函數時,必須先聲明再定義,聲明的做用是告訴編譯器即將定義的函數的名字是什麼,返回值的類型是什麼以及參數是什麼。而定義是告訴編譯器這個函數的功能是什麼。編程

2.類與對象:安全

<1>要使用關鍵字class來聲明一個類;函數

<2>要使用類名來定義一個對象;對象

<3>不要混淆聲明和定義,聲明是說明該類是什麼,定義則是爲一個對象分配內存;內存

<4>要使用點運算符來訪問類的成員;編譯器

<5>要使用對象加點運算符「.」訪問對象的數據成員並給它們賦值;it

<6>不要混淆類和對象,不要給類賦值。編譯

函數是用來執行必定功能的代碼塊,成員函數則是隻能被類的對象所使用的函數:對象只使用該類提供的函數,假如類沒有提供某個函數,那麼對象就不能使用該函數。class

3.類的數據成員:通常狀況下,咱們能夠將類的數據成員設置爲私有,而使用類的公有成員來訪問它們。這樣好處是數據的賦值與讀取分開操做,賦值函數不須要考慮讀取函數是如何工做的,讀取函數代碼的改變也不會影響到賦值函數,即賦值函數不用因讀取函數中代碼的改變而改動本身的代碼。並且因爲將數據成員私有之後,各個對象不能夠直接訪問並修改數據,這樣提升了數據的安全性,所以設置私有數據成員可使程序更容易維護,而且可避免一些不該有的錯誤。效率

4.普通內聯函數:當咱們定義了一個函數後,編譯器就會在內存中爲其建立一個指令集,當咱們調用這個函數時,程序就會跳轉到該指令集處,當該函數運行完畢後,程序又會返回到原來執行調用該函數語句的下一行繼續執行,假如對該函數執行了上百次調用,那麼就要來回跳轉上百次,這會嚴重影響程序的執行效率。C++中,爲解決這一問題,可以使用關鍵字inline聲明函數,如:

inline int fun();

則編譯器將不會建立真正的函數,而只是將這個內聯函數的全部代碼複製到調用函數中這樣程序在執行調用該函數時就不須要來回跳轉,天然就提升了程序運行時的效率。使用內聯函數在提升程序的同時,會需多要一些代碼,好比說程序調用了內聯函數100次,那麼就要將該內聯函數中的代碼複製100次,這樣會增大程序的體積。當函數很小時使用內聯函數比較合適。

在不知道具體怎麼操做時,最好先不要使用內聯函數,等程序完成大部分功能時,在對符合要求的函數進行內嵌操做。

5.將類聲明和定義部分保存在頭文件中

6.若是咱們不想讓某個成員函數修改爲員變量的值,那麼能夠將這個成員函數聲明爲const.如:

void print() const {cout<<"兩數相乘爲:"<<i*j<<endl;

在編程時,必定要儘可能多用const,對於不該當改變對象的成員函數,都應該聲明爲const。這樣若是該成員函數試圖去修改該對象的成員變量時,編譯器會提示錯誤,從而達到幫助差錯的目的。

7.默認構造函數:通常來講,只要咱們不建立任何構造函數,那麼系統就會爲咱們建立這個什麼功能都沒有的默認構造函數,而一旦咱們建立了一個構造函數,則這個默認構造函數就會被自動屏蔽。假如咱們建立了帶參數的構造函數後,又想要一個不帶參數的構造函數,那麼就必須本身再建立一個不帶參數的。

8.注意:構造函數是沒有返回值的,析構函數也沒有返回值

9.假如想要無條件地跳轉到某條語句執行,用goto語句;假如想要對某種條件進行判斷爲真或爲假分別執行不一樣的語句,用if語句;假如須要檢測的條件不少,用if else語句;假如是對數字或者字符進行檢測而且須要檢測的條件又多,用switch語句;假如可以肯定循環的次數,用for語句;假如不能肯定循環的次數,用while語句;假如循環體中的語句至少要執行一次,那麼用do while語句。

另外,continue可使循環又一次從新開始執行,而break語句可使循環直接結束。

相關文章
相關標籤/搜索