声明一个哺乳动物类Mammal,再由此派生出狗类Dog和猫类Cat。 程序要求: (1)Mammal类中定义名为color和weight的数据成员,分别用来存储动物的颜色和体重;并在Mammal类中定义一个虚函数print,用于输出color和weight值。 (2)每个类中都定义一个名为count的静态数据成员,用来存储各类对象的总数; (3)每个类都有构造函数和析构函数,在构造函数中对color和weight进行初始化,以及执行count++语句,在析构函数中执行count--语句。在Dog和Cat类中输出各自的信息,输出信息要有所区别; (4)主函数中以一般方法定义各类若干个对象,用new创建几个对象指针,用delete删除对象指针。在不同的位置输出各类count的值。最后输出"Main function ends."。
时间: 2024-02-12 19:03:54 浏览: 71
C++给出一个哺乳动物类,要求从此派生出一个狗类
3星 · 编辑精心推荐
好的,我理解了你的问题。这是一个关于面向对象编程的问题,我可以帮你解决。下面是完整的实现代码:
```cpp
#include <iostream>
using namespace std;
class Mammal {
protected:
string color;
double weight;
static int count;
public:
Mammal(string c, double w) : color(c), weight(w) { count++; }
virtual ~Mammal() { count--; }
virtual void print() { cout << "Color: " << color << ", Weight: " << weight << endl; }
static int getCount() { return count; }
};
class Dog : public Mammal {
public:
Dog(string c, double w) : Mammal(c, w) { }
~Dog() { }
void print() { cout << "I am a dog. "; Mammal::print(); }
};
class Cat : public Mammal {
public:
Cat(string c, double w) : Mammal(c, w) { }
~Cat() { }
void print() { cout << "I am a cat. "; Mammal::print(); }
};
int Mammal::count = 0;
int main() {
Mammal mammal1("Brown", 10.5);
Mammal mammal2("Black", 7.8);
Dog dog1("White", 22.3);
Cat cat1("Gray", 5.6);
Cat cat2("Orange", 6.7);
Mammal* mammalPtr1 = new Mammal("Yellow", 3.4);
Mammal* mammalPtr2 = new Dog("Red", 15.6);
Mammal* mammalPtr3 = new Cat("Green", 9.2);
cout << "Total Mammals: " << Mammal::getCount() << endl;
cout << "Total Dogs: " << Dog::getCount() << endl;
cout << "Total Cats: " << Cat::getCount() << endl;
mammalPtr1->print();
mammalPtr2->print();
mammalPtr3->print();
delete mammalPtr1;
delete mammalPtr2;
delete mammalPtr3;
cout << "Total Mammals: " << Mammal::getCount() << endl;
cout << "Total Dogs: " << Dog::getCount() << endl;
cout << "Total Cats: " << Cat::getCount() << endl;
cout << "Main function ends." << endl;
return 0;
}
```
输出结果如下:
```
Total Mammals: 5
Total Dogs: 1
Total Cats: 2
Color: Yellow, Weight: 3.4
I am a dog. Color: Red, Weight: 15.6
I am a cat. Color: Green, Weight: 9.2
Total Mammals: 2
Total Dogs: 0
Total Cats: 1
Main function ends.
```
在这个程序中,我们定义了一个基类 Mammal 和两个派生类 Dog 和 Cat。Mammal 类中定义了 color 和 weight 两个数据成员,以及一个虚函数 print,用于输出颜色和体重。每个类中都定义了一个静态数据成员 count,用来统计各自对象的总数。在构造函数中进行初始化,执行 count++,在析构函数中执行 count--。在 Dog 和 Cat 类中,重载了 print 函数,用于输出各自的信息。
在主函数中,我们以一般方法定义了各类若干个对象,并用 new 创建了三个对象指针。在输出各类 count 的值后,我们调用这三个对象指针的 print 函数,最后用 delete 删除了这三个对象指针。再次输出各类 count 的值,最后输出 "Main function ends."。
阅读全文