溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中函數修飾符的示例分析

發布時間:2021-09-03 11:27:25 來源:億速云 閱讀:147 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關C++中函數修飾符的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

函數名前

1、返回值類型

返回值類型是C++中定義函數的必備部分,這些修飾符包括void,(unsigned) int,bool等內置基本數據類型和自定義類型,也包括修飾返回值const關鍵字(如const int*),還包括C++11中新增的類型自動推導auto關鍵字。

2、 template

template關鍵字聲明函數是模板函數。

3、 virtual

virtual關鍵字聲明函數是虛函數,可被子類覆蓋。

4、 inline

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

5、 static

static修飾類的成員函數時指示函數是靜態成員函數,不從屬于具體對象;修飾單獨的函數時,限定函數的可見范圍為本文件內。

6、 extern

extern關鍵字聲明一個定義在外部的函數

7、 explicit

explicit關鍵字在C++11新增,只用于構造函數,指定構造函數要顯式定義,不能隱式轉換。

8、 friend

friend關鍵字聲明類的友元函數,在函數內可直接訪問對象的私有或受保護成員及成員函數。

9、 constexpr

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

函數名后

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

1、使用等號

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

=0:只能用于虛函數,表示函數為純虛函數。

=default:C++11新增,只能用于編譯器提供默認實現的特殊成員函數,指示使用默認實現。

=delete:C++11新增,只能用于編譯器提供默認實現的特殊成員函數,指示編譯器應該刪除該函數的默認實現。

2、直接修飾

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

const

表示函數不會修改對象(或者說調用期間對象不變),注意不包括mutable修飾的成員變量,可參考本人之前文章:C++中的mutable和volatile。

volatile

類似于const修飾的函數,表示對象狀態可能隨時會改變;const修飾的函數內只能調用自身的const成員方法,同理volatile函數內也只能調用自身volatile成員函數。

&

C++11引入的功能,左值引用限定符,指示函數只能被左值對象調用。

&&

C++11引入,右值引用限定符,指示函數只能被右值調用。如果函數沒有引用限定符修飾,左值和右值均可調用。一個引用限定例子:

 #include <iostream>
 struct S {
 void f() & { std::cout << "lvalue\n"; }
 void f() &&{ std::cout << "rvalue\n"; }
 };

 int main(){
 S s;
 s.f();   // 打印“ lvalue ”
 std::move(s).f(); // 打印“ rvalue ”
 S().f();   // 打印“ rvalue ”
 }

override

C++11引入的功能,聲明成員函數覆蓋父類的虛函數。聲明為override后,子類聲明時可不寫virtual。

final

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

noexcept

C++11引入,修飾函數是否會拋出異常。

throw

指示函數拋出異常及類型,C++11起被廢棄。

感謝各位的閱讀!關于“C++中函數修飾符的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女