語法:返回值 operator運算子()
例子:
#include
**從c++11開始,我們能看到很多**當中都有關鍵字noexcept。比如下面就是std::initializer_list的預設建構函式,其中使用了noexcept。
constexpr
initializer_list()
noexcept
:_m_array(0
),_m_len(0
)
該關鍵字告訴編譯器,函式中不會發生異常,這有利於編譯器對程式做更多的優化。
如果在執行時,noexecpt函式向外丟擲了異常(如果函式內部捕捉了異常並完成處理,這種情況不算丟擲異常),程式會直接終止,呼叫std::terminate()函式,該函式內部會呼叫std::abort()終止程式。
**c++中的異常處理是在執行時而不是編譯時檢測的。為了實現執行時檢測,編譯器建立額外的**,然而這會妨礙程式優化。
在實踐中,一般兩種異常丟擲方式是常用的:
乙個操作或者函式可能會丟擲乙個異常;
乙個操作或者函式不可能丟擲任何異常。
後面這一種方式中在以往的c++版本中常用throw()表示,在c++ 11中已經被noexcept代替。
void
swap
(type& x, type& y)
throw()
//c++11之前
void
swap
(type& x, type& y)
noexcept
//c++11
C 過載運算子
運算子過載是一種形式的c 多型。在c 中,編譯器有能力把乙個由資料 物件和操作符共同組成的表示式,解釋為對乙個全域性或成員函式的呼叫。該全域性或成員函式被稱為操作符函式,通過重定義操作符函式,可以實現針對自定義型別 結構,類 的運算法則,並使之與內建型別一樣參與各種表示式。過載運算子可使 看起來更加...
C 過載運算子
本文主要講述加號運算子 自增運算子 流提取運算子運 流插入運算子 先給出vector類 class vector 建構函式 vector const vector v 拷貝建構函式 vector operator const vector v 過載 vector operator 過載前置自增運算子...
C 過載運算子
過載的運算子是帶有特殊名稱的函式,函式名是由關鍵字 operator 和其後要過載的運算子符號構成的。與其他函式一樣,過載運算子有乙個返回型別和乙個引數列表。如果我們定義的函式為類的成員函式 box operator const box 如果我們定義的函式為非成員函式,那麼我們需要為每次操作傳遞兩個...