如果我像这样创建一个对象数组,我就会遇到麻烦:
SM sc[8]{{0},{1},{2},{3},{4},{5},{6},{7}};SM的构造函数定义为:
SM::SM(int);因为在c++中给出了Each member is copy-initialized from the corresponding initializer-clause.,我有一个未解决的问题。
我已经读过了:
Move Constructors and Static Arrays
Initialization of member array objects avoiding move constructor
Move constructor is required even if it is not used. Why?
constexpr array of constexpr objects using move ctor
是的,所有的答案都很好地描述了什么是列表初始化,但我现在找不到一个如何获得对象的静态数组的想法。
有没有解决这个问题的办法?创建一个指针数组并使用new或new@操作进行运行时初始化需要更多的运行时和内存空间。这有点问题,因为我使用的是AVR 8位控制器。
发布于 2015-08-04 06:01:18
“复制初始化”并不意味着“调用复制构造函数”。
C++14 8.5/15:
表单中发生的初始化
T x = a;以及参数传递、函数返回、抛出异常、处理异常和聚合成员初始化称为复制初始化。
请注意,初始化器和初始化对象可以有不同的类型。
因此,您可以使用初始化器列表来初始化数组,而不必调用任何复制构造函数。
https://stackoverflow.com/questions/31791710
复制相似问题