スマート ポインターは一般に小さいため、値渡しは問題ありませんが、スマート ポインターへの参照の受け渡しに問題はありますか。むしろ、これを行ってはならない特定のケースがありますか?
私はラッパー ライブラリを作成しており、いくつかのクラスは基になるライブラリでスマート ポインター オブジェクトをラップしています... 私のクラスはスマート ポインターではありませんが、API は現在スマート ポインター オブジェクトを値渡ししています。
例: 現在のコード:
void class::method(const AnimalPtr pAnimal) { ... }
になる
void class::method(const MyAnimal &animal){...}
MyAnimal
カプセル化する新しいラッパー クラスはどこにありますかAnimalPtr
。
Wrapper クラスがいつの日かスマート ポインターをラップする以上に成長しないという保証はありません。そのため、値渡しは緊張します。