コンストラクタとデストラクタが呼び出されるタイミングを調べるプログラム

#include <iostream>

using namespace std;

class CFoo
{
	int num;
public:
	CFoo(int n):num(n)
	{cout << "コンストラクタが呼ばれました:" << num << '\n';}
	~CFoo()
	{cout << "デストラクタが呼ばれました  :" << num << '\n';}
};

int main()
{
	CFoo foo1(1);
	CFoo foo2(2);
	
	cout << "forループに入ります\n";
	for (int i = 3; i < 5; i++){
		CFoo foo3(i);
	}
	
	cout << "関数を抜けます\n";
	return 0;
}
実行結果
コンストラクタが呼ばれました:1
コンストラクタが呼ばれました:2
forループに入ります
コンストラクタが呼ばれました:3
デストラクタが呼ばれました  :3
コンストラクタが呼ばれました:4
デストラクタが呼ばれました  :4
関数を抜けます
デストラクタが呼ばれました  :2
デストラクタが呼ばれました  :1