具有对象数组的默认复制行为

时间:2012-10-10 20:24:49

标签: c++ arrays copy-constructor copy-assignment

如果我有一个以数组作为成员的类:

class A
{
    Object array[SIZE];
};

我复制了一个实例:

A a;
A b = a;
A c;
c = a;

array逐字节地进行memcpy-ed或逐个元素地复制Object::operator=

1 个答案:

答案 0 :(得分:8)

C ++中的数组表现良好,适用于所有第一类对象,包括用户定义的类型(无论它们是POD还是非平凡构造)。

#include <cstdio>

struct Object
{
    Object()              { puts("Object");  } 
    Object(Object const&) { puts("copy");    } 
   ~Object()              { puts("~Object"); } 
};

struct A
{
    Object array[4];
};

int main()
{
    A a;
    A b = a;
}

输出(另见http://liveworkspace.org/code/40380f1617699ae6967f0107bf080026):

Object
Object
Object
Object
copy
copy
copy
copy
~Object
~Object
~Object
~Object
~Object
~Object
~Object
~Object