21xrx.com
2024-12-28 08:50:18 Saturday
登录
文章检索 我的文章 写文章
"探究C++中子类继承性的简单程序实例"
2023-07-04 18:15:58 深夜i     --     --
C++ 子类继承性 程序实例 探究 简单

在C++中,子类继承性是一个重要的概念,它允许我们创建和组织类层次结构,使得代码更加具有可维护性和可扩展性。在本文中,我们将使用一个简单的程序实例来探究C++中子类继承性的实现方式和基本原理。

在这个程序实例中,我们将创建一个基类Animal和两个子类Dog和Cat。Animal类将有两个数据成员name和age,并包含两个虚函数showName和showAge,用于展示对象的名称和年龄。Dog类和Cat类都将从Animal类继承,并且它们将覆盖showName和showAge函数以便更好地显示自己的信息。

这是我们的程序示例代码:


#include <iostream>

using namespace std;

class Animal

{

  protected:

    string name;

    int age;

  public:

    Animal(string n, int a)

    

      name = n;

      age = a;

    

    virtual void showName()

    

      cout<<"My name is "<<name<<endl;

    

    virtual void showAge()

    

      cout<<"I am "<<age<<" years old"<<endl;

    

};

class Dog : public Animal

{

  public:

    Dog(string n, int a) : Animal(n, a){}

    void showName()

     my name is "<<name<<endl;

    

    void showAge()

     I am "<<age<<" years old"<<endl;

    

};

class Cat : public Animal

{

  public:

    Cat(string n, int a) : Animal(n, a){}

    void showName()

     my name is "<<name<<endl;

    

    void showAge()

    

      cout<<"I am a cat

};

int main()

{

  Animal *a = new Animal("Animal", 3);

  Dog *d = new Dog("Dog", 5);

  Cat *c = new Cat("Cat", 2);

  a->showName();

  a->showAge();

  d->showName();

  d->showAge();

  c->showName();

  c->showAge();

  delete a;

  delete d;

  delete c;

  return 0;

}

在这个程序中,Animal类是基类,Dog和Cat类是从Animal类派生出来的子类。每个类都有一个构造函数,用于初始化它们的数据成员。此外,Animal类中的showName和showAge函数是虚函数,因此它们可以在子类中重写,以便更好地显示各自的信息。

在main函数中,我们创建了一个Animal类的对象a和两个子类Dog和Cat的对象d和c。然后我们调用这些对象的showName和showAge函数,以便比较它们之间的不同。

当我们运行这个程序时,它将输出:


My name is Animal

I am 3 years old

I am a dog, my name is Dog

I am a dog, I am 5 years old

I am a cat, my name is Cat

I am a cat, I am 2 years old

从输出结果可以看出,每个对象调用了它们相应的函数来显示信息。Animal对象显示了它的名称和年龄,而Dog和Cat对象覆盖了这些函数以便更好地显示它们自己的信息。

这个简单的程序实例说明了子类继承性的一个基本原则:子类可以使用并扩展基类的属性和方法。通过这种方式,我们可以轻松地创建和组织类层次结构,并使我们的代码更加具有可维护性和可扩展性。

  
  

评论区

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