zoukankan      html  css  js  c++  java
  • 聚合初始化

    摘自时习之
    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 。

  • 相关阅读:
    python之用循环实现五子棋小程序
    python实现百钱买百鸡
    逻辑综合工具DesignCompiler使用教程
    塑料封装可靠性问题浅析
    python发展历程
    Python02期预科课程笔记索引
    python之虚拟环境
    linux 的IP配置和网络问题的排查
    appache等的安装笔记x32
    4 计算1到100的和
  • 原文地址:https://www.cnblogs.com/narjaja/p/10039614.html
Copyright © 2011-2022 走看看