#include <iostream>
using namespace std;

int main()
{
	struct AnPOD
	{
	  int member;
	  void print() { cout << member << endl; }
	};

	struct NonPOD1
	{
	  int member;
	  NonPOD1() { }
	  void print() { cout << member << endl; }
	  virtual void Hoge() { }	
	};

	struct NonPOD2
	{
	  int member;
	  NonPOD2() : member() { }
	  void print() { cout << member << endl; }
	  virtual void Hoge() { }	
	};

	AnPOD a; a.print(); // a.member は 不定
	AnPOD b = AnPOD(); b.print(); // b.member は ゼロ
	AnPOD *c = new AnPOD; c->print(); // c->member は不定
	AnPOD *d = new AnPOD(); d->print(); // d->member は ゼロ
	AnPOD *e = new AnPOD[5]; e[0].print(); // e[0].member は不定
	AnPOD *f = new AnPOD[5](); f[0].print(); // f[0].member はゼロ
	int g; cout << g << endl; // g は不定
	int h = int(); cout << h << endl; // hはゼロ
	NonPOD1 i; i.print(); // i.val は 不定
	NonPOD2 j; j.print(); // j.val は ゼロ
	return 0;
}
