聚合初始化

摘要:
从当前C++标准库中提取,提供了两个容器来表示数组的概念:array表示静态数组,vector表示动态数组。这两种类型都可以使用列表初始化进行初始化。std::array={1,2,3,4,5};std::vector<int>={1,2,3,4,5};这实际上是聚合初始化。聚合初始化历史悠久,在C语言中就已经存在。intarray[5]={1,2,3,4,5};在C++中,聚合物的初始化称为聚合初始化,可以使用上述语法。

摘自时习之
C++标准库中提供两个容器表示数组这个概念:array表示静态数组,vector表示动态数组 。这两个类型都可以使用列表初始化(list initilization)来初始化。

std::array<int, 5> = {1, 2, 3, 4, 5};
std::vector<int>   = {1, 2, 3, 4, 5};

这实际上是聚合初始化。
聚合初始化其实由来已久,在C语言中就存在了。

int array[5] = {1, 2, 3, 4, 5};

在C++中对于聚合体(aggregate)的初始化称为聚合初始化,可以使用上面这种语法。 有两种类型的对象被称为聚合体:

  • 数组类型
  • 满足下列条件的类类型(通常是结构体(struct)或者联合体(union)):
    • 没有私有或保护的非静态数据成员
    • 没有用户提供的构造函数
    • 没有基类
    • 没有虚函数

所以说下面这个结构体的对象可以使用聚合初始化:

struct Aggregate {
    int i;
    int j;
};

Aggregate aggr = {1, 2};

上面这些都没什么神奇的,真正神奇的是如果你的聚合体中间有嵌套,你可以不用使用花 括号分割:

struct Aggregate {
    int arr[4];
    int j;
};

Aggregate aggr = {1, 2, 3, 4, 5};

在上面这个初始化中,arr 成员会得到{1, 2, 3, 4}, 而 j 成员会初始化成 5 。

免责声明:文章转载自《聚合初始化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VSCode, 当今最流行的免费开源代码编辑器,微软出品,必属精品HTTP请求报文下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

esayUI实践的一些体会

1.如何在页面中使用 easy ui ? 引入 四个文件 <!-- 引入easy ui --> <link rel="stylesheet" type="text/css" href="http://t.zoukankan.com/${pageContext.request.contextPath}/js/easyui/themes/de...

NetBus —— 让你的 App 内部随处感知网络的变化

简介 NetBus 是一个实时监听网络状态的一个框架,接入简单。只需要几步就可以在 Activity 和 Fragment 以及其他要观测的类中很方便的收到网络状态变化的通知。 愿景 可以在 App 任意位置监听网络的变化  同一类中监听不同类型的网络 监听者可以指定不同的网络环境 布局封装,简化布局状态切换 使用 1. 添加依赖 implementa...

Spring学习(四)Spring IOC

Spring 学习目录 Spring学习(一)Spring初识 Spring学习(二)Spring框架结构 Spring学习(三)第一个Spring程序 Spring学习(四)Spring IOC Spring学习(五)Spring 基于注解装配Bean Spring学习(六)Spring AOP Spring学习(七)Spring JdbcTempl...

在Tomcat服务器中启动SpringBoot项目原理(简化版)

总的来说,tomcat方式启动WAR包项目, tomcat会查询context上下文中实现ServletContainerInitializer接口的类,然后调用类的onStartup(Set<Class<?>> c, ServletContext ctx)方法 Spring的SpringServletContainerInitia...

vim命令以及gcc编译器的常用cmd

Gcc常用命令:         -c    仅对源文件进行编译,不链接生成可执行文件。常用于查错和只生成目标文件。     -o    经过gcc处理过后的结果保存在-o后面的文件中,可以是多种文件。如无参数,默认名称不同     -v    查看版本信息     -g    在可执行文件中加入调试信息,相当于Windows下的Debug版本。方便使用g...

kubeadm实现k8s高可用集群环境部署与配置

高可用架构 k8s集群的高可用实际是k8s各核心组件的高可用,这里使用主备模式,架构如下: 主备模式高可用架构说明: 核心组件 高可用模式 高可用实现方式 apiserver 主备 keepalived controller-manager 主备 leader election scheduler 主备 leader election...