====== 動的なインスタンスの確保など、いろいろやった痕跡 ======
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::string;
class cAnimal
{
protected:
string mName;
public:
cAnimal() :mName("") { cout << "Animal誕生 "; }
cAnimal(string _name) :mName(_name)
{ cout << "Animal:" << _name << " 誕生 "; };
void sayMyName() { cout << mName << endl; }
};
class cDog :public cAnimal
{
public:
cDog() : cAnimal()
{cout << "種類はDog" << endl;}
cDog(string _name) :cAnimal(_name)
{cout << "種類はDog" << endl;}
void sayWan() { cout << "BowWow" << endl; }
};
int main()
{
//動的にインスタンスを生成
//動的=必要な時に必要な分のメモリ
//=インスタンスを確保
//cAnimal* pet0 = new cAnimal; //引数なし
//cAnimal* pet0 = new cAnimal("john"); //引数あり
////sayMyNameを呼んでみよう!
//pet0->sayMyName();
////犬"potch"を動的に作って、名前を言って吠える!
//
////動的にcAnimalを親クラスに持つcDogクラスのインスタンス
////を生成して,cDogクラスのポインタ変数に
////インスタンスを割り当てる
//cDog* pet1 = new cDog("potch");
//pet1->sayMyName();
//pet1->sayWan();
//ちょっといたずらしてみる
//int* a = nullptr;
//int b = 10;
//a = &b; と同じやり方
//cAnimal* pet0 = nullptr;
//cAnimal john("john");
//pet0 = &john;
//pet0->sayMyName();
//cDog *pet1=nullptr;
//cDog potch("potch");
//potch.sayMyName();
//potch.sayWan();
//pet1 = &potch;
//pet1->sayMyName();
//pet1->sayWan();
//オブジェクトの配列
//int a[5] = { 1,2,3,4,5 };
//cDog pets[5] = { cDog("ポチ"),cDog("ハナ"), cDog("モカ"),
// cDog("ムギ"), cDog("ココ") };
//for (int i = 0; i < 5; i++)
//{
// //pets[i].sayMyName();
// //pets[i].sayWan();
// (pets + i)->sayMyName();
// (pets + i)->sayWan();
//}
//cinから入力された頭数の犬のオブジェクトを確保し、
//cinからそれぞれの名前を入力して初期化する
//そのあとに、それぞれの名前を表示し、一頭ずつ吠える
int num;//頭数
cin >> num;
cDog* pets = new cDog[num];
/*
cAnimal pet0("john");
pet0.sayMyName();
cDog pet1("potchi");
pet1.sayMyName();
pet1.sayWan();*/
return 0;
}
==== 今日のお題 ====
頭を動かしてみようのコーナー\\
cinから入力された頭数の犬のオブジェクトを確保し、cinからそれぞれの名前を入力して初期化するそのあとに、それぞれの名前を表示し、一頭ずつ吠える。\\
一瞬こうやればいいんじゃね?って思うけど、引数付きコンストラクタが呼べないんだよねぇ
int num;//頭数
cin >> num;
cDog* pets = new cDog[num];