如果我有一个以数组为成员的类:
class A
{
Object array[SIZE];
};
我复制了它的一个实例:
A a;
A b = a;
A c;
c = a;
将array
逐字节进行 memcpy 编辑还是Object::operator=
逐元素复制?
如果我有一个以数组为成员的类:
class A
{
Object array[SIZE];
};
我复制了它的一个实例:
A a;
A b = a;
A c;
c = a;
将array
逐字节进行 memcpy 编辑还是Object::operator=
逐元素复制?
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