C 之特殊函式 過載 預設引數值和內聯函式

2021-10-04 03:53:26 字數 1826 閱讀 7265

該文為中國大學mooc上北京郵電大學崔毅東和楊談老師主講的《c++程式設計(物件導向高階)》筆記整理

作用域的分類

一元作用域解析運算子

當區域性變數與全域性變數相同時,可使用 :: 訪問全域性變數,該運算子被稱為一元作用域解析運算子

#include

int i =10;

intmain()

return0;

}

過載函式是在同乙個名字空間中存在兩個或多個具有相同名字的函式所構成的語法現象

呼叫重構函式的語句,是編譯器在編譯期確定的

編譯器確定重構函式的依據是函式引數的型別、個數和次序,無法根據函式的返回值判斷

如果編譯器無法判定,就會報告二義性錯誤

#include

auto

max(

int a,

int b)

auto

max(

double a,

double b)

intmain()

函式的引數可以指定預設值

指定預設值時,要保證帶預設值的引數位於函式列表的右側

int

max(

int a,

int b =1,

int c)

;// error

intmax

(int a,

int b =1,

int c =1)

;// correct

呼叫帶有預設值的函式時,如果不指定帶有預設值的引數,則該引數自動被賦為預設值

#include

auto

max(

int a,

int b =1)

intmain()

函式宣告有預設引數,函式實現時不需要帶預設引數

#include

intmax

(int a,

int b=5)

;int

main()

intmax

(int a,

int b )

函式過載時,不允許定義預設引數

#include

void

max(

int a =1)

void

max(

double a =

1.4)

intmain()

普通函式的優缺點

使用內聯函式

內聯函式的宣告

在普通函式前面加上 inline 關鍵字

inline

intmax

(int a,

int b)

呼叫內聯函式

和呼叫普通函式寫法相同

int x =

max(3,

6);int y =

max(0,

8);

內聯展開

編譯器實際在呼叫內聯函式的情況

int x =(3

>6?

3:6)

;int y =(0

>8?

0:8)

;

內聯函式的使用

常用場景:適用於頻繁呼叫的短函式

inline 關鍵字,只是對編譯器的乙個請求,內聯函式是否展開,由編譯器決定

c 函式過載和預設引數

函式過載 是c 語言物件導向的特點 多型的一種表現形式 又稱為靜多型 過載的規則 1 函式名相同。2 引數個數不同,引數型別不同,引數順序不同,均可構成過載。3 僅返回值型別不同則不可以構成過載。void func int a ok void func char a ok void func int...

C 函式過載, 預設引數

在我們的自然語言當中,乙個詞在不同的情景之下可能會有多重不同的含義,但是我們可以通過合理地判斷來確定該詞的真正含義,這種情況,我們可以說該詞被 過載 了.關於函式過載的概念 函式過載其實就是函式的一種特殊的情況,在我們的c 中允許在同一作用域當中宣告幾個功能類似的同名函式,但是這個同名函式的形參列表...

C 預設引數 函式過載

預設引數 預設引數是宣告或定義函式時為函式的引數指定乙個預設值。在呼叫該函式時,如果沒有指定實參則採用該預設值,否則使用指定的實參。例void testfunc int a 0 intmain 預設引數分類 1.全預設引數 void testfunc int a 10,int b 20,int c ...