ある関数内のローカル変数でクラスを実体宣言した場合、コンストラクタとデストラクタはどのタイミングで呼ばれるのでしょうか?
実証コードを書いてみましたのでご確認ください。
以下のようなサンプルコードを作成します。
#include <stdio.h> class TestClass { public: TestClass() { puts("TestClass() が呼ばれました。"); } public: ~TestClass() { puts("~TestClass() が呼ばれました。"); } }; void main() { puts("これからスタック上にクラスのインスタンスを生成します。"); TestClass tTestClass; puts("スコープの終わりに来ると…"); }
上記のコードの実行結果は以下の通りです。
これからスタック上にクラスのインスタンスを生成します。 TestClass() が呼ばれました。 スコープの終わりに来ると… ~TestClass() が呼ばれました。
実行結果を見てわかるように、ローカル関数内のローカル変数としてクラスを実体宣言した場合、実体宣言したタイミングでインスタンスが生成され、ローカル変数のスコープが終わると自動的にデストラクタが呼ばれます。
よくできてますね。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。