第6章 函式

2021-08-10 08:43:41 字數 2213 閱讀 5246

1.   自動物件:只存在於塊執行期間的物件

2.   區域性靜態物件static:在程式執行路徑第一次經過物件定義語句時初始化,並且知道程式終止才被銷毀,如果區域性靜態變數沒有顯示的初始值,初始化為0.

3.   如果函式無須改變引用形參的值,最好將其生命為常量引用。

4.   使用引用形參返回額外資訊

5.   和其他初始化過程一樣,當用實參初始化形參時會忽略掉頂層const

6.   可以使用非常量初始化乙個頂層const物件,但是反過來不行

7.   盡量使用常量引用,防止以為可以改變變數

8.   不許允拷貝陣列,在使用陣列時(通常)會將其轉換成指標,並且確保使用陣列時不會越界

9.   關於指標形參的使用,空字元結束和使用標準庫規範

10.        p198含有可變形參的函式

11.        省略符形參應該僅僅用於c和c++通用的型別,特別應該注意的是,大多數類型別的物件在傳遞給省略符形參時都無法正確拷貝

12.        通常情況下,void函式如果想在它中間位置提前退出,可以使用return語句

13.        乙個返回函式是void的函式也能使用return另乙個返回void的函式

14.        在含有return語句的迴圈後面應該也有一條return語句,如果沒有的話該程式就是錯誤的

15.        不要返回區域性物件的引用或指標

16.        列表初始化返回值:例如返回vevtor如果返回的是內建型別,則花括號包圍的列表最多包含乙個值,且該值所佔的空間不應該大於目標型別空間,如果函式返回的是類型別,由類本身定義初始值如何使用

17.        允許main函式沒有return語句直接結束,如果控制到達了main函式的結尾處而且沒有return語句,編譯器將隱式地插入一條返回0的return語句

18.        main函式的返回值可以看作是狀態指示器,返回0表示執行成功,返回其他值表示執行失敗,其中非0值的具體含義依機器而定

19.        使用尾置返回型別:例如:auto func(int i) -> int(*) [10]; 返回乙個指標,該指標指向含有10個整數的陣列

20.        使用decltype:並不負責把陣列型別轉換成對應的指標,所以decltype的結果是個陣列,想要表示返回指標還必須在函式宣告時加乙個*符號

21.        函式過載:不允許兩個函式除了返回型別外其他所有的要素都相同,內層將隱藏外層宣告的同名函式

22.        因為const不能轉換成其他型別,所以我們只能把const物件傳遞給從const形參

23.        形參預設值:被賦予了預設值的形參,後面所有形參都必須有預設值;在給定的作用域中乙個形參只能被賦予一次預設值;可多次宣告函式給不同形參賦予預設值

24.        內聯函式(inline):一般用於優化規模小、流程直接、頻繁呼叫的函式,無遞迴時,內聯函式的請求才會被編譯器接受

25.        constexpr函式:指能用於常量表示式的函式。但返回值可以是非常量;返回和形參型別都是字面值型別,函式只執行一句return;被隱式指定為內聯函式;

26.        預處理巨集assert:根據提供的表示式判斷是否要輸出錯誤資訊並終止程式,可定義預處理變數ndebug禁用assert的效果,常用於檢查「不能發生」的條件

27.        可在#ifndef ndebug和#endif之間編寫自己的除錯**;有5個編譯器預定義的名字變數__func__/__file__/__line__/__time__/__date__,用於輸出除錯資訊

28.        函式匹配:先選擇在呼叫點可用的同名候選函式,再找到引數數量相等且型別相同或可強制轉換的可行函式,再尋找其中最佳匹配的函式

29.        最佳匹配:每個實參的匹配都不劣於其他可行函式,且至少有乙個優於其他;若找不到最佳匹配則報二義性錯誤

30.        呼叫過載函式時應盡量避免強制型別轉換,如果在實際應用中確實需要強制型別轉換,則說明我們設計的形參集合不合理

31.        實參型別轉化優先順序:精確匹配》const轉換》型別提公升》算術型別或指標轉換》類型別轉換

32.        函式指標:宣告指向乙個函式的指標,只需要用指標替換函式名;將函式名當作值使用時會自動轉換成指標

33.        過載函式的指標:指標型別必須與過載函式中的某乙個精確匹配

34.        函式指標形參:函式宣告中,若形參是函式型別,則它會自動轉換成指向函式的指標

第 6章 函式

6.1.2引數 2.引數陣列 c 允許為函式指定乙個 只能乙個 特殊的引數,這個引數必須是函式定義中的最後乙個引數,可用params關鍵字定義他們 如 params int vals 3.引用引數和值引數 理解 將本來在函式中引數按值引用的規則改變成按傳遞引用,使得這個引數會改變,定義引數和傳遞引數...

第6 章函式

必背必記 1.建立函式 建立函式使用def關鍵字實現,具體的語格式如下 def functionname parameterlist comments functionbody 引數說明 functionname 函式名稱,在呼叫函式時使用。parameterlist 可選引數,用於指定向函式中傳遞...

第7章 函式 6

7.5 區域性物件 在函式中定義的形參和變數的名字只位於函式的作用域中 這些名字只在函式體中可見。通常,變數名從宣告或定義的地方開始到包圍它的作用域結束處都是可用的。7.5.1 自動物件 只用當定義它的函式被呼叫時才存在的物件稱為自動物件 automatic object 自動物件在每次呼叫函式時建...