クラス B のオブジェクトをメンバーとして参照するクラス A があります。クラス B のコピー コンストラクター (および代入演算子) はプライベートです。A にデフォルトのコピー コンストラクターを使用することは有効で良い考えだと思いますか (実際には、代入機能と割り当て機能の両方を必要とするある種の STL コンテナーに、型 A の多くのオブジェクトを格納できる機能が必要です)。コピー可能。)
class A
{
private:
B& b_;
public:
A(B& b) : b_(b){}
}
これまでのところ、私の知る限り、上記の方法に対する異議は次のとおりですが、私の設計はそれに直面していません。上記の例について他に問題/問題/懸念があるかどうかを知りたいです...
- 参照のみがコピーされるため、タイプ B の元のオブジェクト b が破棄されると問題が発生します。( b はスコープ全体で使用できるため、適用されません。)
- b_ は A のすべてのインスタンスで一意ですか? (いいえ、B は実際にはスコープ内で 1 回だけインスタンス化されるため、シングルトン クラスの効果があります。)
他に懸念事項がある場合は、ここに記載してください。私は明示的に定義されたコピーコンストラクターには熱心ではありませんが、それに対して心を開いています。