先练习练习,回头自己给自己讲讲再巩固下
#include <iostream>
#include <string>
class World_C {
public:
World_C() {}
World_C(std::string race, std::string place)
: p_race(race), p_place(place) {}
virtual ~World_C(){}
public:
virtual void where_Func(std::string race, std::string place) = 0;
virtual void eat_Func(std::string race) = 0;
private:
std::string p_race;
std::string p_place;
};
class Civilization_C : public World_C{
public:
Civilization_C() {}
Civilization_C(std::string race, std::string place)
: World_C(race, place) {}
~Civilization_C() {}
public:
virtual void where_Func(std::string race, std::string place) {
std::cout << race << " live in the " << place << std::endl;
}
virtual void eat_Func(std::string race) {
if (race[0] == 'c') {
std::cout << "They are eating with chopsticks..." << std::endl;
}
if (race[0] == 'a') {
std::cout << "They are eating with forks..." << std::endl;
}
}
};
class Barbarous_C : public Civilization_C {
public:
Barbarous_C() {}
Barbarous_C(std::string race, std::string place)
: Civilization_C(race, place) {}
~Barbarous_C() {}
public:
virtual void where_Func(std::string race, std::string place) {
std::cout << race << " live in the " << place << std::endl;
}
virtual void eat_Func(std::string race) {
std::cout << "They are eating with tentacle..." << std::endl;
}
};
int main(int argc, char *argv[]) {
std::shared_ptr<World_C> p(new Civilization_C("chinese", "Asian"));
p->where_Func("chinese", "Asian");
p->eat_Func("chinese");
std::shared_ptr<World_C> p1(new Civilization_C("american", "America"));
p->where_Func("american", "America");
p->eat_Func("american");
std::shared_ptr<Civilization_C> p2(new Barbarous_C("martian", "Mars"));
p1->where_Func("martian", "Mars");
p1->eat_Func("martian");
system("pause");
return 0;
}