4

だから..memcpy(dataCopy、data、length);のようなものをどのように呼び出すことができますか?抽象データTをコピーするには?

または、抽象Tが安全でない場合は、TがPOD(単純な古いデータ、基本的にはC構造体)であることを知っているとしましょう-それをコピーすることは可能ですか?

4

3 に答える 3

3

任意のC++タイプで作業するという意味Tですか?TそれがPOD(単純な古いデータ、基本的にはC構造体)型であることがわかっていない限り、。をT使用して型のオブジェクトをコピーすることは安全ではありませんmemcpy。これによりT、たとえば、コピーコンストラクターが実行されなくなり、誤ったコピーが発生する可能性があります(たとえば、を実行しようとmemcpyするstd::vectorと、データバッファーがコピーされません)。

于 2011-01-23T04:33:18.737 に答える
3

あなたはそれを確実に行うことはできません。それがとても簡単で、可能で、信頼できるものであれば、プログラマーはoperator=()コピーコンストラクターをオーバーロードして作成することはありません。

オブジェクトのコピーを作成する場合は、オーバーロードするかoperator=()、copy-constructorを作成するか、またはその両方を実行してください。

于 2011-01-23T04:36:22.107 に答える
0

Tの種類によっては危険な場合があります。TがPODの場合は、問題ありません。それ以外の場合は、Tのコピーコンストラクターを呼び出すことをお勧めします(または、不可能な場合はクローンパターンを使用します)。

于 2011-01-23T04:35:57.427 に答える