Cpp深入 函式過載

2021-06-16 05:42:12 字數 644 閱讀 9879

1. 函式過載特徵function signature

2. 過載解析

1. 函式過載特徵

cpp中過載的函式對用函式的使用者的表象是函式同名,但是對於編譯器來講,編譯器根據函式的特徵將函式重新命名,這也是為什麼c++和c相互呼叫時需要使用extern "c"的原因。那麼什麼是函式的特徵?一般函式的特徵是指函式的引數列表,不包含函式的返回值型別。需要注意的是:

1.1. 函式不區分const引數和非const引數,例如,下面的**將無法通過編譯

但是如果是類的成員函式的話,編譯器將根據呼叫型別的不同選擇合適的const版本,常見的的情景是對operator的const和非const過載。

1.2 引用型別和型別本身是相同的

下面的**將無法通過 編譯:

2. 函式的過載解析

函式的過載解析分為 :首先篩選出和函式名相同的所有函式,篩選最佳函式,如果存在最佳匹配函式,呼叫之,否則出錯。這裡面的主要過程是「上選最佳函式」,這個過程中一般遵循的原則:

2.1 完全匹配

2.2 提公升匹配

2.3 標準轉換匹配

2.4 使用者自定義匹配

2.5 具體函式比泛型函式擁有更高的優先順序

2.6 指向非const資料的指標和引用是優先於const的指標和引用的匹配

Cpp深入 函式過載

1.函式過載特徵function signature 2.過載解析 1.函式過載特徵 cpp中過載的函式對用函式的使用者的表象是函式同名,但是對於編譯器來講,編譯器根據函式的特徵將函式重新命名,這也是為什麼c 和c相互呼叫時需要使用extern c 的原因。那麼什麼是函式的特徵?一般函式的特徵是指函...

Cpp深入 引用型別

1.如何從建立引用?2.引用型別初始化 3.更改別名?4.一般性的準則 1.如何建立引用?cpp中引用通過typename 實現建立,如下 int a 10 int alias a 2.引用型別初始化 引用型別需要在建立之初初始化,否則編譯器將報錯 int a 10 必須初始化,否則報錯 int a...

深入理解C 過載函式

深入理解c 過載函式 1.定義 c 允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形式引數 指引數的個數 型別或者順序 必須不同,即函式的引數列表不同,也就是說用同乙個運算子完成不同的運算功能。這就是過載函式。過載函式常用來實現功能類似而所處理的資料型別不同的問題。2.好處 函式過載...