91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

C++11中 constexpr構造函數的作用是什么

發布時間:2021-06-21 18:49:11 來源:億速云 閱讀:643 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關C++11中 constexpr構造函數的作用是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

聚合類

聚合類(aggregate class)允許利用者直接訪問其成員,并且具有特殊的初始化形式。聚合類滿足以下條件:

  1. 所有成員都是public的

  2. 沒有定義構造函數

  3. 沒有類內初始值

  4. 沒有基類,也沒有虛函數

怎么理解呢?

首先,看來看去聚合類其實就是一個C結構體;其次,聚合這個詞,應該是相對組合的,表明了成員和類之間的松散關系。

當一個類是聚合類時,就可以使用初始值列表像下面這樣初始化了:

struct Point{
   int x;
   int y;
};
Point pt = {10, 10};

字面值常量類

前面講過constexpr函數,它的參數和返回值都必須是常量表達式。而常量表達式的最基本要素就是字面值類型。字面值類型除了包括算數類型,引用和指針以外,某些類也屬于字面值類型,C++11稱之為字面值常量類。主要包括兩種情況:

首先數據成員都是字面類型的聚合類就是一種。上面的Point類就是一個例子。我們可以這樣理解,字面值的聚合繼續具有字面值的特征,這里主要是編譯階段可以求值。

還有一種情況,雖然不是聚合類,但是只要滿足下面的條件,也是字面值常量類:

  1. 數據成員必須都必須是字面值類型。

  2. 類必須至少含有一個constexpr構造函數。

  3. 如果一個數據成員含有類內初始值,則初始值必須是常量表達式;如果成員屬于某種類,初始值必須使用該類的constexpr構造函數。

  4. 類必須使用析構函數的默認定義。

對于這幾個條件,作者這樣理解:

滿足條件1,就可以在編譯階段求值,這一點和聚合類一樣。

滿足條件2,就可以創建這個類的constexpr類型的對象。

滿足條件3,就可以保證即使有類內初始化,也可以在編譯階段解決。

滿足條件4,就可以保證析構函數沒有不能預期的操作。

constexpr構造函數

通過前置constexpr關鍵字,就可以聲明constexpr構造函數,同時:

除了聲明為=default或者=delete以外,constexpr構造函數的函數體一般為空,使用初始化列表或者其他的constexpr構造函數初始化所有數據成員。

struct Point{
   constexpr Point(int _x, int _y)
       :x(_x),y(_y){}
   constexpr Point()
       :Point(0,0){}
   int x;
   int y;
};

constexpr Point pt = {10, 10};

上述就是小編為大家分享的C++11中 constexpr構造函數的作用是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

阳谷县| 绥芬河市| 莱西市| 维西| 鄂伦春自治旗| 榆树市| 林西县| 论坛| 墨脱县| 金昌市| 宁晋县| 宿松县| 江口县| 丽水市| 即墨市| 呈贡县| 禹州市| 乌拉特前旗| 舟曲县| 河南省| 宣威市| 永年县| 兴山县| 旬邑县| 徐州市| 东源县| 陆川县| 波密县| 呼图壁县| 盈江县| 阳曲县| 宁安市| 岗巴县| 钟祥市| 武夷山市| 溧阳市| 马山县| 堆龙德庆县| 师宗县| 河南省| 海兴县|