====== 動的なインスタンスの確保など、いろいろやった痕跡 ====== #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];