亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

南漳县| 石台县| 锦屏县| 布尔津县| 屏东市| 汉中市| 广安市| 海盐县| 普洱| 甘南县| 垫江县| 安泽县| 留坝县| 阿荣旗| 龙游县| 澄迈县| 怀仁县| 全椒县| 玉环县| 尤溪县| 江油市| 梧州市| 定安县| 日喀则市| 德钦县| 温宿县| 华蓥市| 新邵县| 平湖市| 哈巴河县| 无极县| 麻栗坡县| 溆浦县| 闵行区| 图片| 丰原市| 江口县| 永兴县| 明星| 桐梓县| 准格尔旗|