复制 C 样式数组和结构
copying C-style arrays and structure
C++ 不允许使用=
复制 C 样式数组。但是允许使用=
复制结构,如 在此链接中 -> 在 C v/s 中复制数组 C.It 中的复制结构还没有任何可信的答案。 但请考虑以下代码
#include <iostream>
using namespace std;
struct user {
int a[4];
char c;
};
int main() {
user a{{1,2,3,4}, 'a'}, b{{4,5,6,7}, 'b'};
a = b; //should have given any error or warning but nothing
return 0;
}
上面的代码段没有给出任何类型的错误和警告,并且工作正常。为什么? 考虑解释这两个问题(这个问题和上面链接的问题(。
您的类user
获取隐式声明的复制构造函数和隐式声明的复制赋值运算符。
隐式声明的复制赋值运算符将内容从b
复制到a
。
标准中的两段似乎适用:
class.copy.ctor
如果成员是一个数组,则每个元素都使用 x 的相应子对象直接初始化;
class.copy.assign
如果子对象是数组,则以适合元素类型的方式分配每个元素;
是的,代码应该可以正常工作。 数组不能作为一个整体直接分配; 但它们可以通过隐式定义的复制赋值运算符赋值为数据成员,对于非联合类类型,它执行非静态数据成员(包括数组成员及其元素(的成员级复制赋值。
数组类型的对象不能作为一个整体进行修改:即使它们 是左值(例如,可以获取数组的地址(,它们不能 显示在赋值运算符的左侧:
int a[3] = {1, 2, 3}, b[3] = {4, 5, 6}; int (*p)[3] = &a; // okay: address of a can be taken a = b; // error: a is an array struct { int c[3]; } s1, s2 = {3, 4, 5}; s1 = s2; // okay: implicity-defined copy assignment operator // can assign data members of array type
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组