質問: nullptr); ~Sample(); private: QNetworkAccessManager manager; } ``` この動作がC++の言語仕様なのかQtのライブラリ仕様なのかご存じの方がいれば教えていただきたいです。 そして、もし可能であればそういった記述のあるページor検索ワードを教えていただけると幸いです。
回答: こんにちは。 > > メンバ変数のnew無しコンストラクタが自動的に呼び出される > > > という記述から、ありがちな勘違いにハマっているご様子です。 C++では、クラス型変数を定義したら必ずコンストラクタが呼ばれます。どのコンストラクタが呼ばれるのかは変数定義方法によります。 newの動作は、当該クラスを記録できるだけのサイズのメモリをヒープから確保し、その先頭アドレスを渡してコンストラクタを呼び出します。 `FooClass foo;`のような定義は、その文脈によってグローバル領域、スタック領域、ヒープ領域のどこかに当該クラスを記録できるだけのサイズのメモリを確保し、その先頭アドレスを渡してコンストラクタを呼び出します。 これはC++の仕様です。 > > そういった記述のあるページor検索ワードを教えていただけると幸いです。 > > > 江添亮のC++入門 に書かれてました。 新しいC++に対応した入門解説は少ないですが、江添氏はC++仕様に詳しいので網羅的にかかれているだろうと思います。