5

メンバーとして配列を持つクラスがある場合:

class A
{
    Object array[SIZE];
};

そして、そのインスタンスをコピーします:

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

arrayバイトごとに memcpyされるかObject::operator=、要素ごとにコピーされますか?

4

1 に答える 1

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
于 2012-10-10T20:30:34.073 に答える