21xrx.com
2024-11-22 05:29:30 Friday
登录
文章检索 我的文章 写文章
C++基类和派生类的示例演示
2023-07-12 14:40:03 深夜i     --     --
C++ 基类 派生类 示例 演示

C++中经常使用基类和派生类来实现面向对象的编程,基类是一个普通的类,而派生类则是基于基类创建的新类。本文将通过一个示例演示C++基类和派生类的用法。

示例:动物的类继承关系

我们假设有一个Animal类,它包含了所有动物的基本属性和行为。然后我们可以从Animal类继承出Dog类和Cat类,它们都拥有Animal类的所有属性和行为,并且还能够添加自己的属性和行为。

以下是Animal类的定义:


class Animal {

public:

  Animal(int age = 0, int weight = 0);

  virtual void eat();

  virtual void sleep();

  int age;

  int weight;

};

在这里我们定义了一个Animal类,它有两个属性age和weight,以及两个行为eat和sleep。这里我们使用了virtual关键字,表示这两个方法是虚函数,也就是将会被派生类重写。

接下来我们创建Dog类和Cat类:


class Dog: public Animal {

public:

  Dog(int age = 0, int weight = 0, std::string color = "");

  virtual void bark();

  std::string color;

};

class Cat: public Animal {

public:

  Cat(int age = 0, int weight = 0, std::string eyeColor = "");

  virtual void meow();

  std::string eyeColor;

};

在这里我们使用了public关键字,表示Dog和Cat都是公共派生类,它们可以访问Animal中的公共成员变量和公共函数。

Dog类和Cat类都有自己的属性和行为,而这些属性和行为都可以通过继承自Animal类来实现。例如Dog类有自己的颜色属性和bark行为,而Cat类有自己的眼睛颜色属性和meow行为。

现在我们可以使用这些类来创建对象和调用它们的方法了:


int main() {

  Animal* animal1 = new Dog(2, 30, "brown");

  Animal* animal2 = new Cat(1, 10, "blue");

  animal1->eat();

  animal2->sleep();

  delete animal1;

  delete animal2;

  return 0;

}

在这里我们使用new关键字来创建了一个Dog对象和一个Cat对象,并将它们都赋值给了一个Animal指针。然后我们调用了它们的方法eat和sleep,这些方法在Dog和Cat类中都被重写了。最后我们使用delete关键字来释放内存,这是动态分配内存所必需的。

在本例中,我们使用了基类和派生类的继承关系,使得派生类可以继承并扩展基类的功能。C++中基类和派生类的使用非常广泛,它们是实现面向对象编程的基础。希望这个简单的示例能够帮助读者更好地理解它们的用法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复