21xrx.com
2024-12-22 22:12:49 Sunday
登录
文章检索 我的文章 写文章
C++继承与多态编程题目
2023-06-30 00:33:44 深夜i     --     --
C++继承 多态编程 编程题目 面向对象编程 继承与多态实现

C++是一门面向对象的编程语言,继承与多态是其面向对象的基本特性之一,因此掌握这两个概念对于学习C++编程来说至关重要。本文将介绍C++继承与多态的基本知识,并给出一些练习题目供大家练手。

一、 C++继承

继承是面向对象编程中的一种重要机制,它允许一个类从已有的类中继承属性和方法,并可以在此基础上添加新的属性和方法,实现代码的复用。

C++支持多种继承方式,包括公有继承,私有继承和保护继承。其中,公有继承是最常用的一种方式,它允许派生类访问基类的公有成员,但不能访问基类的私有成员。

下面是一个简单的示例,演示了如何使用C++的继承机制:


// 基类

class Shape {

public:

  void setWidth(int w)

   width = w;

 

  void setHeight(int h)

   height = h;

 

protected:

  int width;

  int height;

};

// 派生类

class Rectangle: public Shape {

public:

  int getArea() {

   return (width * height);

  }

};

int main() {

  Rectangle Rect;

  Rect.setWidth(5);

  Rect.setHeight(7);

  cout << "Total area: " << Rect.getArea() << endl;

  return 0;

}

在上述代码中,Shape类是一个基类,它包含了setWidth和setHeight两个公有方法,并定义了两个受保护的成员变量width和height。Rectangle类是一个派生类,它通过public关键字继承了Shape类,并添加了一个新的方法getArea,用于计算矩形的面积。在main函数中,我们创建了一个Rectangle对象,并设置其宽和高,最后输出计算得到的面积。

二、 C++多态

多态是一种面向对象编程的重要特性,它允许不同的对象以不同的方式响应相同的消息或方法调用。简单来说,就是同一类型的对象,在不同的条件下可以表现出不同的类型特征。

C++中实现多态主要有两种方式:虚函数和模板。虚函数是最常用的一种方式,它允许派生类重写基类的虚函数,从而实现多态的特性。

下面是一个简单的示例,演示了如何使用C++的虚函数实现多态的机制:


// 基类

class Shape {

public:

  virtual int getArea()

   return 0;

 

};

// 派生类

class Rectangle: public Shape {

public:

  Rectangle(int w, int h)

   width = w;

   height = h;

 

  int getArea() {

   return (width * height);

  }

private:

  int width;

  int height;

};

class Triangle: public Shape {

public:

  Triangle(int w, int h)

   width = w;

   height = h;

 

  int getArea() {

   return (width * height) / 2;

  }

private:

  int width;

  int height;

};

int main() {

  Shape *shape;

  Rectangle rec(10,7);

  Triangle tri(10,5);

  shape = &rec;

  cout << "Total Rectangle area: " << shape->getArea() << endl;

  shape = &tri;

  cout << "Total Triangle area: " << shape->getArea() << endl;

  return 0;

}

在上述代码中,Shape类是一个基类,它包含一个名为getArea的虚函数。Rectangle类和Triangle类是两个派生类,它们都重写了getArea函数,并返回不同的面积值。在main函数中,我们利用指针来分别访问这两个类,通过调用它们的getArea方法,实现多态的特性。

三、 练习题目

1. 基类Shape有一个受保护的数据成员color,两个派生类Circle和Rectangle有各自的数据成员radius和length,实现这三个类,并在main函数中分别创建它们的对象,设置不同的值,并输出其数据。

2. 基类Animal有虚函数speak,两个派生类Dog和Cat分别重写了这个虚函数,实现这三个类,并在main函数中分别创建Dog和Cat的对象,调用它们的speak方法,输出不同的结果。

3. 定义Shape类和Circle类,Circle类是一个派生类,它重写了Shape类的getArea方法,并添加了两个自己的数据成员x和y。在main函数中创建Circle对象,并分别调用它们的setWidth,setHeight和getArea方法,输出结果。

总之,掌握C++继承与多态的基本知识是学好C++编程的关键,通过练习题目来巩固和拓展自己的知识,是非常有效的学习方法。希望读者能够认真学习和掌握这两个知识点,并在实际的项目中合理应用。

  
  

评论区

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