// new ClassT[N] と動的メモリを配列で確保した際、確保された
// オブジェクトの配列全てに対してコンストラクタは呼ばれるのか ?

#include <iostream>

using namespace std;


class Foo
{
private:
	int a;
public:
	Foo( int x = 99) {
		cout << "I'm Constructor " ;
		a = x ;
		cout << a << endl ;
	}
	virtual ~Foo( ) { ; };
};


int
main( )
{
	Foo *p = new Foo[3] ;

	// VC6(SP3) は new で失敗しても
	// ANSI/ISO C++ で定めた動き(bad_alloc をスロー)はせず、
	// 古典的に NULL ポインタを返す

	if ( p == NULL ) {
		cout << "bad_alloc" << endl ;
	} else {
		cout << "success!" << endl;
	}

	return 0;
}

/*
	OK です。
*/


// end of file