以下のコードを与えると、Aのデストラクタがプライベートであるというエラーが表示されるのはなぜですか?明らかにそれはプライベートですが、このようにBのAオブジェクトインスタンスを初期化すると、Aのデストラクタが呼び出される理由がわかりません。オブジェクトの初期化中にデストラクタコール?
私は、ネットワーク接続されていないシステムからメモリからコードを再作成しており、コンパイラを持っていません。
class A
{
public:
A(int val) : x(val) {}
private:
int x;
~A() {}
};
class B
{
public:
B() : aInstance() {}
private:
A aInstance;
};
int main()
{
B b;
}
スタックベースのオブジェクトでは(間接的にも)実行できません。プライベートデストラクタの使用方法や制限については、こちらをご覧ください:http://stackoverflow.com/questions/631783/what-is-the-use- of-destruction-as-private – holtavolt