用c++设计一个基类动物类(Animal),用来描述动物的属性和行为
时间: 2024-12-18 14:31:36 浏览: 11
c++多态类动物的叫声
在 C++ 中,你可以设计一个名为 `Animal` 的基类来描述动物的基本属性和通用的行为。以下是一个简单的例子:
```cpp
// 基类 Animal
class Animal {
public:
// 构造函数
Animal(int age) : age_(age), name_("未知") {}
// 属性
int getAge() const { return age_; }
virtual std::string getName() const { return name_; }
// 通用行为
virtual void eat() const {
std::cout << "The animal is eating.\n";
}
virtual void sleep() const {
std::cout << "The animal is sleeping.\n";
}
protected:
// 私有数据成员,防止直接访问
int age_;
std::string name_;
private:
// 防止复制构造函数和赋值操作符,以控制对象的创建和修改
Animal(const Animal&) = delete;
Animal& operator=(const Animal&) = delete;
};
```
在这个例子中,`Animal` 类有一个整数类型的 `age_` 和一个字符串类型的 `name_` 来存储年龄和名称。它还定义了两个虚函数 `eat()` 和 `sleep()`,表示所有动物的共同行为。`getName()` 是纯虚函数,因为实际的动物种类会有不同的名字,所以需要由派生类来实现。
为了使用这个基类,可以创建派生类(如 `Dog`、`Cat` 等),并覆盖 `getName()` 函数:
```cpp
class Dog : public Animal {
public:
Dog(int age, const std::string& name) : Animal(age), name_(name) {}
std::string getName() const override { return name_; } // 实现父类纯虚函数
};
int main() {
Dog dog(3, "Buddy");
dog.eat();
dog.sleep();
std::cout << "Dog's Name: " << dog.getName() << "\n"; // 输出:Dog's Name: Buddy
return 0;
}
```
阅读全文