21xrx.com
2024-11-10 00:12:02 Sunday
登录
文章检索 我的文章 写文章
C++继承与派生的示例代码
2023-07-11 08:23:06 深夜i     --     --
C++ 继承 派生 示例代码 类型系统

C++中继承与派生是面向对象编程中非常重要的概念,它允许程序员构建对象的层次结构,从而简化代码编写和维护。下面是一个简单的示例代码,用于阐述C++中继承与派生的程序实现。

首先,定义一个基类Animal,包含一些基本属性和方法:


class Animal {

public:

  Animal()

    this->type = "Unknown";

    this->age = 0;

  

  Animal(string type, int age)

    this->type = type;

    this->age = age;

  

  virtual ~Animal() {};

  string getType()

    return this->type;

  

  int getAge()

    return this->age;

  

  void setType(string type)

    this->type = type;

  

  void setAge(int age)

    this->age = age;

  

  virtual void move()

    cout << "Animal moves" << endl;

  

private:

  string type;

  int age;

};

然后,定义一个派生类Dog,继承Animal并添加一些特殊的属性和方法:


class Dog : public Animal {

public:

  Dog()

    this->type = "Dog";

    this->color = "Brown";

  

  Dog(int age, string color)

    this->type = "Dog";

    this->age = age;

    this->color = color;

  

  virtual ~Dog() {};

  string getColor()

    return this->color;

  

  void setColor(string color)

    this->color = color;

  

  void bark()

    cout << "Dog barks" << endl;

  

  virtual void move()

    cout << "Dog runs" << endl;

  

private:

  string color;

};

其中,Dog类继承自Animal类并重写了其中的move()方法,使其变更为“Dog runs”。

最后,我们在主函数中测试这些类的功能:


int main() {

  Animal animal;

  cout << animal.getType() << " " << animal.getAge() << endl;

  animal.move();

  Dog dog(2, "White");

  cout << dog.getType() << " " << dog.getAge() << " " << dog.getColor() << endl;

  dog.move();

  dog.bark();

  return 0;

}

输出结果为:


Unknown 0

Animal moves

Dog 2 White

Dog runs

Dog barks

从中我们可以看出,Animal类被成功实例化,而Dog类则继承了Animal类并添加了更多属性和方法。此外,Dog类中重写了Animal类中的move()方法,其运行结果和Animal类的不同。

综上所述,C++中继承与派生是面向对象编程中非常重要的一部分,它允许程序员构建对象的层次结构,简化代码编写和维护。通过上述示例代码,我们可以更好地理解这些概念和实现方式。

  
  

评论区

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