相关疑难解决方法(0)

什么是聚合和POD以及它们如何/为何特殊?

常见问题解答涉及聚合和POD,并涵盖以下材料:

  • 什么是聚合
  • 什么是POD(普通旧数据)?
  • 它们有什么关系?
  • 它们如何以及为何特别?
  • C++ 11有什么变化?

c++ aggregate standard-layout c++11 c++17

525
推荐指数
6
解决办法
13万
查看次数

std :: array是default-initialize还是value-initialize?

根据cppreference,std::array构造函数在std::array创建时执行默认初始化.但是,当我在Visual Studio 12.0中进行一些测试时,在某些情况下std::array似乎正在执行值初始化.

std::array<int, 3> arr1;  // gives me some garbage values, as expected
auto arr2 = std::array<int, 3>();  // gives me three 0, value-initialize?
Run Code Online (Sandbox Code Playgroud)

此外,当它std::array是类的成员时,有时它具有不确定的值,而有时它全部为零.

class Container {
public:
    Container() ...

    int& operator[](size_t i) { return arr[i]; }    
    size_t size() { return ARR_SIZE; }

private:
    static const size_t ARR_SIZE = 3;
    std::array<int, ARR_SIZE> arr;
};
Run Code Online (Sandbox Code Playgroud)

如果构造函数未显式定义或arr不在成员初始arr值设定项列表中,则包含不确定的值.

Container() {}  // arr has indeterminate values, same for …
Run Code Online (Sandbox Code Playgroud)

c++ arrays visual-studio c++11

4
推荐指数
1
解决办法
2529
查看次数

标签 统计

c++ ×2

c++11 ×2

aggregate ×1

arrays ×1

c++17 ×1

standard-layout ×1

visual-studio ×1