C 函式修飾符總結

2021-09-11 09:43:52 字數 2865 閱讀 3976

c++博大精深,而且不斷擁抱新的變化。本文簡要總結一下c++中函式的修飾符,其中部分在實際中極少用到。

按修飾符的位置分為函式名前與函式名後兩種,以下分別做介紹。

返回值型別

返回值型別是c++中定義函式的必備部分,這些修飾符包括void(unsigned) intbool等內建基本資料型別和自定義型別,也包括修飾返回值const關鍵字(如const int*),還包括c++11中新增的型別自動推導auto關鍵字。

template

template關鍵字宣告函式是模板函式

virtual

virtual關鍵字宣告函式是虛函式,可被子類覆蓋。

inline

inline關鍵字提示編譯器應將函式內聯

static

static修飾類的成員函式時指示函式是靜態成員函式,不從屬於具體物件;修飾單獨的函式時,限定函式的可見範圍為本檔案內

extern

extern關鍵字宣告乙個定義在外部的函式

explicit

explicit關鍵字在c++11新增,只用於建構函式,指定建構函式要顯式定義,不能隱式轉換

friend

friend關鍵字宣告類的友元函式,在函式內可直接訪問物件的私有或受保護成員及成員函式。

constexpr

c++11中新增,指示函式返回常量表示式(可以簡單理解為返回字面量)。

置於函式名後的修飾符有兩種,第一種使用等號(=),第二種直接修飾。

使用等號

此類較為簡單,總共有三種:

=0:只能用於虛函式,表示函式為純虛函式

=defaultc++11新增,只能用於編譯器提供預設實現的特殊成員函式,指示使用預設實現

=deletec++11新增,只能用於編譯器提供預設實現的特殊成員函式,指示編譯器應該刪除該函式的預設實現

直接修飾

種類繁多,本人已知的修飾符包括:

const

表示函式不會修改物件(或者說呼叫期間物件不變),注意不包括mutable修飾的成員變數,可參考本人之前文章:c++中的mutable和volatile。

volatile

類似於const修飾的函式,表示物件狀態可能隨時會改變const修飾的函式內只能呼叫自身的const成員方法,同理volatile函式內也只能呼叫自身volatile成員函式。

&

c++11引入的功能,左值引用限定符,指示函式只能被左值物件呼叫。

&&

c++11引入,右值引用限定符,指示函式只能被右值呼叫。如果函式沒有引用限定符修飾,左值和右值均可呼叫。乙個引用限定例子:

#include struct s 

void f() &&

};int main()

複製**

override

c++11引入的功能,宣告成員函式覆蓋父類的虛函式。宣告為override後,子類宣告時可不寫virtual

final

c++11引入,指示函式是最終實現,子類不應當再定義或覆蓋,可與override同時使用。

noexcept

c++11引入,修飾函式是否會丟擲異常

throw

指示函式丟擲異常及型別,c++11起被廢棄

本文簡要概括的列出了c++定義函式的修飾符。需要注意的是,嚴格來說上述內容中並不全是修飾符,部分僅是語法結構。

C 函式修飾符總結

c 博大精深,而且不斷擁抱新的變化。本文簡要總結一下c 中函式的修飾符,其中部分在實際中極少用到。按修飾符的位置分為函式名前與函式名後兩種,以下分別做介紹。返回值型別返回值型別是c 中定義函式的必備部分,這些修飾符包括void,unsigned int,bool等內建基本資料型別和自定義型別,也包括...

C 修飾符 總結

c 中的修飾符用於限定型別和成員方法。修飾符有幾種不同的分法,可以分為類的修飾符 成員修飾符和訪問修飾符。一 類修飾符,用於修飾類種類。1 abstract 用於定義乙個抽象類,抽象類不能被例項化,只能作為其他類的基類,可以被繼承,且派生類中需要實現抽象類的所有成員。2 sealed 用於定義乙個不...

C 修飾符 總結

c 中的修飾符用於限定型別和成員方法。修飾符有幾種不同的分法,可以分為類的修飾符 成員修飾符和訪問修飾符。一 類修飾符,用於修飾類種類。1 abstract 用於定義乙個抽象類,抽象類不能被例項化,只能作為其他類的基類,可以被繼承,且派生類中需要實現抽象類的所有成員。2 sealed 用於定義乙個不...