#include<iostream>
using namespace std;
class Pet{
string pname;
public:
/*virtual void speak() const =0;
virtual void eat() const=0;*/
Pet(const string& petname):pname(petname){}
virtual string name()const{return pname;}
virtual string speak()const{
return pname+" generic";
}
};
/*void Pet::eat()const{
cout<<"Pet::eat()"<<endl;
}
void Pet::speak()const{
cout<<"Pet::speak()"<<endl;
}*/
class Dog : public Pet{
string name;
public:
Dog(const string& petname,const string& str):Pet(petname),name(str){}
virtual string sit()const{
return Pet::name()+" sits";
}
string speak()const{
return Pet::name()+name+" says 'Bark!'";
}
/*void speak()const{
cout<<"Dog::speak()"<<endl;
}
void eat()const{
cout<<"Dog::eat()"<<endl;
}*/
};
/*class Dog1 : public Dog{
public:
void speak()const{
cout<<"Dog1::speak()"<<endl;
}
void eat()const{
cout<<"Dog1::eat()"<<endl;
}
};*/
void describe(Pet *p)
{
cout<<p->speak()<<endl;
}
int main()
{
/*Dog1 simba;
simba.speak();
simba.eat();*/
/*Pet* p[]={new Pet("generic"),new Dog("bob")};
cout<<p[0]->speak()<<endl;
cout<<p[1]->speak()<<endl;
cout<<((Dog*)p[1])->sit()<<endl;*/
Pet p("Alfred");
Dog d("dogsig","gfhjd");
describe(&p);
describe(&d);
return 0;
}
2019-11-26
最新推荐文章于 2022-08-03 15:33:42 发布