7-1 动物世界 (15 分)
补充程序 :
1、实现Mammal类的方法
2、由Mammal类派生出Dog类,在Dog类中增加itsColor成员(COLOR类型)
3、Dog类中增加以下方法:
constructors: Dog()、Dog(int age)、Dog(int age, int weight)、Dog(int age, COLOR color)、 Dog(int age, int weight, COLOR color)、~Dog()
accessors: GetColor()、SetColor()
Other methods: WagTail()、BegForFood() ,并实现以上这些方法 。
提示:类似Speak()、WagTail()这些动作,函数体可以是输出一句话。比如:Mammal is spaeking… , The Dog is Wagging its tail…
4、补充主函数的问号部分,并运行程序,检查输出是否合理。
enum COLOR{ WHITE, RED, BROWN, BLACK, KHAKI };
class Mammal
{
public:
//constructors
Mammal();
Mammal(int age);
~Mammal();
//accessors
int GetAge() const;
void SetAge(int);
int GetWeight() const;
void SetWeight(int);
//Other methods
void Speak() const;
void Sleep() const;
protected:
int itsAge;
int itsWeight;
};
int main()
{
Dog Fido;
Dog Rover(5);
Dog Buster(6, 8);
Dog Yorkie(3, RED);
Dog Dobbie(4, 20, KHAKI);
Fido.Speak();
Rover.WagTail();
cout << “Yorkie is " << ?? << " years old.” << endl;
cout << “Dobbie weighs " << ?? << " pounds.” << endl;
return 0;
}
输入格式:
无
输出格式:
按照程序格式输出。
输入样例:
在这里给出一组输入。例如:
无
输出样例:
在这里给出相应的输出。例如:
Mammal is speaking…
The dog is wagging its tail…
Yorkie is 3 years old.
Dobbie weighs 20 pounds.
收获
- 有基类函数的公有方法访问继承来的基类私有成员
- 熟悉了对枚举的使用
- 构造函数调用,继承来的成员不能使用初始化列表形式初始化
- 析构函数调用记得加{},不然会报错
#include<iostream>
using namespace std;
enum COLOR{ WHITE, RED, BROWN, BLACK, KHAKI };
class Mammal
{
public:
//constructors
Mammal(){
SetAge(0);
SetWeight(0);
};
Mammal(int age):itsAge(age){};
~Mammal(){
// cout<<"~Mammal\n";
};//??????????????
//accessors
int GetAge() const{
return itsAge;
};
void SetAge(int a){
itsAge=a;
};
int GetWeight() const{
return itsWeight;
};
void SetWeight(int a){
itsWeight=a;
};
//Other methods
void Speak() const{
cout<<"Mammal is speaking..."<<endl;
};
void Sleep() const;
protected:
int itsAge;
int itsWeight;
};
class Dog: public Mammal{
private:
COLOR itsColor;
public:
//constructors
Dog(){
SetAge(0);
SetWeight(0);
SetColor(RED);
};
Dog(int age){
SetAge(age);
};
Dog(int age,int weight){
SetAge(age);
SetWeight(weight);
};
Dog(int age,COLOR color){
SetAge(age);
itsColor=color;
};
Dog(int age,int weight,COLOR color){
SetAge(age);
SetWeight(weight);
itsColor=color;
};
~Dog(){
// cout<<"~Dog\n";
};
//accessors:
COLOR GetColor(){
return itsColor;
};
void SetColor(COLOR color){
itsColor=color;
};
//Other methods:
void WagTail(){
cout<<"The dog is wagging its tail...\n";
};
void BegForFood();
};
int main()
{
Dog Fido;
Dog Rover(5);
Dog Buster(6, 8);
Dog Yorkie(3, RED);
Dog Dobbie(4, 20, KHAKI);
Fido.Speak();
Rover.WagTail();
cout << "Yorkie is " << Yorkie.GetAge() << " years old." << endl;
cout << "Dobbie weighs " << Dobbie.GetWeight() << " pounds." << endl;
return 0;
}