===== 継承の応用 =====
まず復習。いろいろ思い出そう。
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::string;
class cAnimal
{
protected:
string mName;
public:
cAnimal():mName(""){}
cAnimal(string _name) :mName(_name) {};
void sayMyName() { cout << mName << endl; }
};
class cDog :public cAnimal
{
public:
cDog() : cAnimal(){}
cDog(string _name) :cAnimal(_name) {}
void sayWan() { cout << "BowWow" << endl; }
};
int main()
{
cDog pet1("potchi");
pet1.sayMyName();
pet1.sayWan();
return 0;
}
==== さらに継承 ====
もう1個cAnimalを継承するクラスを追加してみる。
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::string;
class cAnimal
{
protected:
string mName;
public:
cAnimal():mName(""){}
cAnimal(string _name) :mName(_name) {};
void sayMyName() { cout << mName << endl; }
};
class cDog :public cAnimal
{
public:
cDog() : cAnimal(){}
cDog(string _name) :cAnimal(_name) {}
void sayWan() { cout << "BowWow" << endl; }
};
class cCat :public cAnimal
{
public:
cCat() : cAnimal() {}
cCat(string _name) :cAnimal(_name) {}
void sayNyan() { cout << "Meow" << endl; }
};
int main()
{
cDog pet1("potchi");
pet1.sayMyName();
pet1.sayWan();
cCat pet2("tama");
pet2.sayMyName();
pet2.sayNyan();
cAnimal* p[2];
p[0] = &pet1;
p[1] = &pet2;
p[0]->sayMyName();
//sayWan呼べない。。。。
return 0;
}