動的なインスタンスの確保など、いろいろやった痕跡

#include <iostream>
#include <string>
 
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];