当前位置:首页 > 科技  > 软件

C++14中的成员初始值设定项与聚合功能详解

来源: 责编: 时间:2023-11-20 08:58:13 399观看
导读一、引言C++14作为C++语言的一个重要版本,引入了许多新的特性和功能,其中包括成员初始值设定项(Member Initializer List)和聚合(Aggregate)。这些特性在提高代码的可读性和灵活性方面起到了重要作用。本文将详细介绍这两个

一、引言

C++14作为C++语言的一个重要版本,引入了许多新的特性和功能,其中包括成员初始值设定项(Member Initializer List)和聚合(Aggregate)。这些特性在提高代码的可读性和灵活性方面起到了重要作用。本文将详细介绍这两个特性及其在C++14中的应用。vAm28资讯网——每日最新资讯28at.com

vAm28资讯网——每日最新资讯28at.com

vAm28资讯网——每日最新资讯28at.com

二、成员初始值设定项(Member Initializer List)

1.成员初始值设定项的定义

成员初始值设定项是一种在构造函数初始化列表中指定成员变量初始值的方法。通过在构造函数初始化列表中列出成员变量及其初始值,可以确保成员变量在构造函数的主体部分被初始化。vAm28资讯网——每日最新资讯28at.com

2.成员初始值设定项的语法

成员初始值设定项的语法如下:vAm28资讯网——每日最新资讯28at.com

class MyClass {  public:      int a;      double b;      MyClass(int x, double y) : a(x), b(y) {} // 成员初始值设定项  };

vAm28资讯网——每日最新资讯28at.com

在上述示例中,MyClass有两个成员变量a和b,它们的初始值通过构造函数初始化列表进行设定。这种方式的初始化可以确保成员变量在构造函数主体部分执行之前被正确初始化。vAm28资讯网——每日最新资讯28at.com

3.成员初始值设定项的注意事项

  • 成员初始值设定项必须按照成员变量在类中声明的顺序进行初始化。
  • 如果成员变量是内置类型,则不需要使用成员初始值设定项进行初始化。
  • 如果成员变量是常量或引用类型,则不能在成员初始值设定项中进行初始化。

三、聚合(Aggregate)

1.聚合的定义

聚合是一种特殊的类类型,它允许将多个变量组合成一个单一的实体。聚合的特点是它们没有构造函数、析构函数或任何虚函数。聚合只能包含其他聚合类型的成员,并且不能包含类类型的成员。vAm28资讯网——每日最新资讯28at.com

2.聚合的语法

聚合的语法如下:vAm28资讯网——每日最新资讯28at.com

struct MyAggregate {      int a;      double b;  };

vAm28资讯网——每日最新资讯28at.com

在上述示例中,MyAggregate是一个聚合类型,它包含了两个整型变量a和b。由于MyAggregate是一个聚合类型,因此它不能包含构造函数、析构函数或虚函数。vAm28资讯网——每日最新资讯28at.com

3.聚合的注意事项

  • 聚合不能包含类类型的成员,只能包含其他聚合类型的成员。
  • 聚合不能包含构造函数、析构函数或虚函数。如果聚合类型需要析构函数或虚函数,则必须声明一个类类型的成员。

四、代码示例与讲解(示例代码:使用成员初始值设定项和聚合)

下面是一个使用成员初始值设定项和聚合的示例代码:vAm28资讯网——每日最新资讯28at.com

#include <iostream>  using namespace std;    // 定义一个聚合类型 MyAggregate  struct MyAggregate {      int a;      double b;  };    // 定义一个类 MyClass,该类包含一个聚合类型的成员和一个使用成员初始值设定项初始化的成员变量。  class MyClass {  public:      MyAggregate agg = {10, 20.5}; // 定义一个聚合类型的成员变量 agg,并使用成员初始值设定项初始化它的成员变量 a 和 b。      int c = 30; // 定义一个整数类型的成员变量 c,并使用成员初始值设定项将其初始化为30。  };    int main() {      MyClass obj; // 创建一个 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 的整数类型成员变量 c 的值。      return 0;  }

vAm28资讯网——每日最新资讯28at.com

以下是代码的讲解:vAm28资讯网——每日最新资讯28at.com

MyAggregate agg; 定义了一个名为 agg 的 MyAggregate 类型的成员变量。由于 MyAggregate 是聚合类型,所以它不能包含构造函数,我们需要使用成员初始值设定项来初始化它的成员变量。vAm28资讯网——每日最新资讯28at.com

MyAggregate agg = {10, 20.5}; 这里我们使用了成员初始值设定项来初始化 agg 的成员变量 a 和 b。我们可以通过在 = 后面直接跟上初始化列表来给聚合类型的成员变量进行初始化。初始化列表中的顺序必须与聚合类型成员变量在定义时的顺序相同。vAm28资讯网——每日最新资讯28at.com

int c = 30; 这里我们定义了一个名为 c 的整数类型成员变量,并使用成员初始值设定项将其初始化为30。vAm28资讯网——每日最新资讯28at.com

五、结论

通过使用成员初始值设定项和聚合功能,我们可以更加灵活地管理类中的成员变量。成员初始值设定项允许我们在构造函数初始化列表中指定成员变量的初始值,而聚合功能则允许我们将多个变量组合成一个单一的实体。这些特性使得代码更加简洁、可读性更强且更加灵活。vAm28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-31014-0.htmlC++14中的成员初始值设定项与聚合功能详解

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C++ 20类型转换指南:使用场景与优秀实践

下一篇: 快速创建高效REST API的十个要点解析

标签:
  • 热门焦点
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    【Techweb评测】中端机型用户群体巨大,占了中国目前手机市场的大头,一直以来都是各手机品牌的“必争之地”,其中OPPO K系列机型一直以来都以高品质、
  • 2022爆款:ROG魔霸6 冰川散热系统持续护航

    喜逢开学季,各大商家开始推出自己的新产品,进行打折促销活动。对于忠实的端游爱好者来说,能够拥有一款梦寐以求的笔记本电脑是一件十分开心的事。但是现在的
  • SN570 NVMe SSD固态硬盘 价格与性能兼具

    SN570 NVMe SSD固态硬盘是西部数据发布的最新一代WD Blue系列的固态硬盘,不仅闪存技术更为精进,性能也得到了进一步的跃升。WD Blue SN570 NVMe SSD的包装外
  • 苹果MacBook Pro 2021测试:仍不支持平滑滚动

    据10月30日9to5 Mac 消息报道,苹果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后获得了不错的评价,亮点包括行业领先的性能,令人印象深刻的电池续航,精美丰
Top