日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

C++14中的成員初始值設(shè)定項與聚合功能詳解

來源: 責編: 時間:2023-11-20 08:58:13 311觀看
導(dǎo)讀一、引言C++14作為C++語言的一個重要版本,引入了許多新的特性和功能,其中包括成員初始值設(shè)定項(Member Initializer List)和聚合(Aggregate)。這些特性在提高代碼的可讀性和靈活性方面起到了重要作用。本文將詳細介紹這兩個

一、引言

C++14作為C++語言的一個重要版本,引入了許多新的特性和功能,其中包括成員初始值設(shè)定項(Member Initializer List)和聚合(Aggregate)。這些特性在提高代碼的可讀性和靈活性方面起到了重要作用。本文將詳細介紹這兩個特性及其在C++14中的應(yīng)用。e5W28資訊網(wǎng)——每日最新資訊28at.com

e5W28資訊網(wǎng)——每日最新資訊28at.com

e5W28資訊網(wǎng)——每日最新資訊28at.com

二、成員初始值設(shè)定項(Member Initializer List)

1.成員初始值設(shè)定項的定義

成員初始值設(shè)定項是一種在構(gòu)造函數(shù)初始化列表中指定成員變量初始值的方法。通過在構(gòu)造函數(shù)初始化列表中列出成員變量及其初始值,可以確保成員變量在構(gòu)造函數(shù)的主體部分被初始化。e5W28資訊網(wǎng)——每日最新資訊28at.com

2.成員初始值設(shè)定項的語法

成員初始值設(shè)定項的語法如下:e5W28資訊網(wǎng)——每日最新資訊28at.com

class MyClass {  public:      int a;      double b;      MyClass(int x, double y) : a(x), b(y) {} // 成員初始值設(shè)定項  };

e5W28資訊網(wǎng)——每日最新資訊28at.com

在上述示例中,MyClass有兩個成員變量a和b,它們的初始值通過構(gòu)造函數(shù)初始化列表進行設(shè)定。這種方式的初始化可以確保成員變量在構(gòu)造函數(shù)主體部分執(zhí)行之前被正確初始化。e5W28資訊網(wǎng)——每日最新資訊28at.com

3.成員初始值設(shè)定項的注意事項

  • 成員初始值設(shè)定項必須按照成員變量在類中聲明的順序進行初始化。
  • 如果成員變量是內(nèi)置類型,則不需要使用成員初始值設(shè)定項進行初始化。
  • 如果成員變量是常量或引用類型,則不能在成員初始值設(shè)定項中進行初始化。

三、聚合(Aggregate)

1.聚合的定義

聚合是一種特殊的類類型,它允許將多個變量組合成一個單一的實體。聚合的特點是它們沒有構(gòu)造函數(shù)、析構(gòu)函數(shù)或任何虛函數(shù)。聚合只能包含其他聚合類型的成員,并且不能包含類類型的成員。e5W28資訊網(wǎng)——每日最新資訊28at.com

2.聚合的語法

聚合的語法如下:e5W28資訊網(wǎng)——每日最新資訊28at.com

struct MyAggregate {      int a;      double b;  };

e5W28資訊網(wǎng)——每日最新資訊28at.com

在上述示例中,MyAggregate是一個聚合類型,它包含了兩個整型變量a和b。由于MyAggregate是一個聚合類型,因此它不能包含構(gòu)造函數(shù)、析構(gòu)函數(shù)或虛函數(shù)。e5W28資訊網(wǎng)——每日最新資訊28at.com

3.聚合的注意事項

  • 聚合不能包含類類型的成員,只能包含其他聚合類型的成員。
  • 聚合不能包含構(gòu)造函數(shù)、析構(gòu)函數(shù)或虛函數(shù)。如果聚合類型需要析構(gòu)函數(shù)或虛函數(shù),則必須聲明一個類類型的成員。

四、代碼示例與講解(示例代碼:使用成員初始值設(shè)定項和聚合)

下面是一個使用成員初始值設(shè)定項和聚合的示例代碼:e5W28資訊網(wǎng)——每日最新資訊28at.com

#include <iostream>  using namespace std;    // 定義一個聚合類型 MyAggregate  struct MyAggregate {      int a;      double b;  };    // 定義一個類 MyClass,該類包含一個聚合類型的成員和一個使用成員初始值設(shè)定項初始化的成員變量。  class MyClass {  public:      MyAggregate agg = {10, 20.5}; // 定義一個聚合類型的成員變量 agg,并使用成員初始值設(shè)定項初始化它的成員變量 a 和 b。      int c = 30; // 定義一個整數(shù)類型的成員變量 c,并使用成員初始值設(shè)定項將其初始化為30。  };    int main() {      MyClass obj; // 創(chuàng)建一個 MyClass 類型的對象 obj。      cout << "agg.a: " << obj.agg.a << endl; // 輸出 obj 的聚合類型成員變量 agg 的成員變量 a 的值。      cout << "agg.b: " << obj.agg.b << endl; // 輸出 obj 的聚合類型成員變量 agg 的成員變量 b 的值。      cout << "c: " << obj.c << endl; // 輸出 obj 的整數(shù)類型成員變量 c 的值。      return 0;  }

e5W28資訊網(wǎng)——每日最新資訊28at.com

以下是代碼的講解:e5W28資訊網(wǎng)——每日最新資訊28at.com

MyAggregate agg; 定義了一個名為 agg 的 MyAggregate 類型的成員變量。由于 MyAggregate 是聚合類型,所以它不能包含構(gòu)造函數(shù),我們需要使用成員初始值設(shè)定項來初始化它的成員變量。e5W28資訊網(wǎng)——每日最新資訊28at.com

MyAggregate agg = {10, 20.5}; 這里我們使用了成員初始值設(shè)定項來初始化 agg 的成員變量 a 和 b。我們可以通過在 = 后面直接跟上初始化列表來給聚合類型的成員變量進行初始化。初始化列表中的順序必須與聚合類型成員變量在定義時的順序相同。e5W28資訊網(wǎng)——每日最新資訊28at.com

int c = 30; 這里我們定義了一個名為 c 的整數(shù)類型成員變量,并使用成員初始值設(shè)定項將其初始化為30。e5W28資訊網(wǎng)——每日最新資訊28at.com

五、結(jié)論

通過使用成員初始值設(shè)定項和聚合功能,我們可以更加靈活地管理類中的成員變量。成員初始值設(shè)定項允許我們在構(gòu)造函數(shù)初始化列表中指定成員變量的初始值,而聚合功能則允許我們將多個變量組合成一個單一的實體。這些特性使得代碼更加簡潔、可讀性更強且更加靈活。e5W28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-31014-0.htmlC++14中的成員初始值設(shè)定項與聚合功能詳解

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++ 20類型轉(zhuǎn)換指南:使用場景與優(yōu)秀實踐

下一篇: 快速創(chuàng)建高效REST API的十個要點解析

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 安化县| 安仁县| 彩票| 车险| 眉山市| 浪卡子县| 微博| 师宗县| 交城县| 繁峙县| 华蓥市| 安国市| 册亨县| 寿阳县| 长乐市| 曲沃县| 宁都县| 新巴尔虎右旗| 清苑县| 紫金县| 嘉兴市| 丹寨县| 阳江市| 仙游县| 洱源县| 绥德县| 海盐县| 阳山县| 获嘉县| 客服| 乌海市| 柳州市| 句容市| 巴彦淖尔市| 新营市| 廉江市| 会昌县| 中超| 沛县| 云阳县| 固镇县|