首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建不可移动/复制构造对象数组

如何创建不可移动/复制构造对象数组
EN

Stack Overflow用户
提问于 2015-08-03 23:55:16
回答 2查看 117关注 0票数 1

如果我像这样创建一个对象数组,我就会遇到麻烦:

代码语言:javascript
运行
复制
SM sc[8]{{0},{1},{2},{3},{4},{5},{6},{7}};

SM的构造函数定义为:

代码语言:javascript
运行
复制
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位控制器。

EN

Stack Overflow用户

发布于 2015-08-04 06:01:18

“复制初始化”并不意味着“调用复制构造函数”。

C++14 8.5/15:

表单中发生的初始化

代码语言:javascript
运行
复制
T x = a;

以及参数传递、函数返回、抛出异常、处理异常和聚合成员初始化称为复制初始化。

请注意,初始化器和初始化对象可以有不同的类型。

因此,您可以使用初始化器列表来初始化数组,而不必调用任何复制构造函数。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31791710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档