【发布时间】:2016-04-02 04:40:06
【问题描述】:
我想知道这段代码是如何工作的:
struct my_array
{
int r[1000];
};
int main()
{
my_array foo, bar;
foo = bar;
}
因为foo = bar 调用将为类调用构造函数提供的operator=,这将懒惰地将其应用于每个成员。但是数组没有operator= 的实现,证明是,这段代码编译失败:
int main()
{
int a[1000], b[1000];
a = b;
}
那么我的第一个代码是怎么编译的呢?
【问题讨论】:
-
因为
structs 和classes 一样,有一个默认的operator=复制每个成员。 -
@DavidSchwartz 是吗?这就是我写的,默认的
operator=被调用,这反过来将operator=应用于每个成员,我的问题是:如果数组没有operator=(即无法复制),这将如何工作) -
默认
operator=复制每个成员。它不一定要对它们调用operator=,除非这是复制它们的适当方式。为什么struct和int r[2];与struct和int r1, r2;的复制方式不同? -
@DavidSchwartz:我明白了,感谢您的澄清!
标签: c++ arrays assignment-operator