// new ClassT と動的メモリを確保した際、確保されたオブジェクトの
// コンストラクタは呼ばれるのか ?

#include <iostream>

using namespace std;


class Foo
{
public:
	Foo( ) { cout << "I'm Constructor" << endl ; };
	virtual ~Foo( ) { ; };
};


int
main( )
{
	Foo *p = new Foo ;

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

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

	return 0;
}

/*
	1. はい。呼ばれます。
	2. §5.3.3@ARM より、
		>	クラスがコンストラクタを持つならば、コンストラクタへの引数が
		>	適切に与えられるか、あるいはクラスがデフォルト・コンストラクタ
		>	を持つ場合だけ、new によってそのクラスのオブジェクトを作成できる。
*/


// end of file