コンテキスト: シンプルなライブラリを作成しています。その中で、作成したクラスの 1 つを返します。これは、a) スタックで宣言し、ヒープ上にある必要がある場合はユーザーがヒープにコピーすることを期待するか、b) で宣言することができます。ヒープを使用して、ユーザーがdelete
オブジェクトを使い終わったときにオブジェクトに期待します。
これらの方法のどれがベスト プラクティスであり、明確な勝者がいない場合は、どこで使用する必要がありますか? .dll
(など)を作成しようと考えています.so
が、別の種類のバイナリを作成すると答えは変わりますか? ユーザーがヘッダーとソースをプロジェクトにコピーし、プロジェクトをビルドするたびにライブラリ全体をビルドするとどうなるでしょうか。何が変わるでしょうか?
補足: 3 番目のオプションは、関数によって返されたオブジェクトがスタック上にあるかどうかをパラメータで指定できるようにすることだと思います。ただし、これは非常に複雑に思えますが、ライブラリ/API がそれを行うのを見たことがありません。4 番目のオプションは、既存のオブジェクトへのポインターを許可することです。これは、新しいデータで埋められます。このようにして、ユーザーは希望するオブジェクトの種類を指定できますが、これもやや複雑に見えます。