关于复制对象

时间:2010-09-07 18:53:23

标签: c++ objective-c c

  

可能重复:
  Why does C++ support memberwise assignment of arrays within structs, but not generally?

为什么我们可以直接将一个结构的对象分配给另一个结构 例如:

struct student s1,s2;
s2=s1 //is perfectly ok.

但是我们不能将一个数组值分配给另一个 例如:

int a[10],b[10];
a=b //is not allowed.

虽然结构元素可能包含任何数组。

请解释。

3 个答案:

答案 0 :(得分:2)

由于纯粹的历史原因,不允许在语言级别进行数组分配。另请查看this问题。

答案 1 :(得分:1)

归根结底,我认为没有理由在理论基础上有太大的作用。我猜这可以归结为期望阵列通常足够大以防止意外复制是值得的。

相比之下,我认为期望结构通常足够小,以至于支持分配的便利性超过了可能做出意想不到的昂贵事情的风险。

答案 2 :(得分:0)

这是指定的方式。如果需要可分配数组,请使用std :: vector:

std::vector< int> a(10), b(10);
a = b;

结构(和类)的默认赋值运算符的规则是它调用基础结构/类的赋值运算符,然后调用每个数据成员的赋值运算符。