コンストラクターでクラスを引数として渡すとき、ほとんどの場合、ポインターを渡すことになります。その主な理由は、インスタンス化できない抽象クラスを渡す必要があり、参照を null にすることはできないため、実際には選択肢がありません...
例を次に示します。
// Abstract class A
class A {
virtual void foo() = 0;
};
class B : public A {
void foo();
};
class C {
public:
C(A* a) : _a(a) {};
private:
A* _a;
};
オブジェクトが指している(削除時に削除する)ことにC
注意したい場合もあれば、オブジェクトを削除せずに削除したい場合もあります。A
_a
C
_a
A
適切なプログラミング方法論を持つためのベスト プラクティスは何ですか?