一文带你掌握C++中的继承

一文带你掌握C++中的继承

什么是继承

继承是面向对象编程的重要特性之一,它可以让一个类获得另一个类的变量和函数。这种类之间的关系被称为父子类关系或基类派生类关系。子类可以通过继承基类的成员来复用基类的代码,从而避免重复开发。

如何使用继承

在C++中,继承可以使用关键字extends:(冒号)。子类继承了父类的所有成员,包括变量、函数和构造函数。在子类中可以使用基类的变量和函数,也可以覆盖某些基类的函数,从而实现多态性。

下面是一个例子:

#include<iostream>
using namespace std;

// 基类
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和一个派生类Rectangle,Rectangle通过public继承Shape。Rectangle获得了Shape类中的setWidth()和setHeight()函数,通过这两个函数为Rectangle对象设置宽度和高度。在Rectangle中,我们定义了一个计算面积的函数getArea(),该函数通过访问基类中的width和height变量计算矩形的面积。

继承的类型

C++中继承有三种类型:公有继承(public)、私有继承(private)和保护继承(protected)。

  1. 公有继承

公有继承是最常用的继承类型,它将基类的公有成员和保护成员都继承到派生类中,而私有成员不能被继承。

下面是一个公有继承的示例:

#include<iostream>
using namespace std;

// 基类
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;
}

运行结果为:

Total area: 35
  1. 私有继承

私有继承是指派生类继承基类的私有成员,这些私有成员不能被派生类访问,只能通过基类的公有和保护成员访问。

下面是一个私有继承的示例:

#include<iostream>
using namespace std;

class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }
   protected:
      int width;
      int height;
};

class Square: private Shape {
   public:
      void setSize(int s) {
         width = s;
         height = s;
      }
      int getArea() {
         return (width * height);
      }
};

int main() {
   Square Sq;

   Sq.setSize(5);

   // 输出对象的面积
   cout << "Total area: " << Sq.getArea() << endl;

   return 0;
}

运行结果为:

Total area: 25
  1. 保护继承

保护继承是指派生类继承基类的保护成员,这些被继承的保护成员在派生类中中仍然是保护成员,只能被基类或派生类的成员访问。

下面是一个保护继承的示例:

#include<iostream>
using namespace std;

class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }
   protected:
      int width;
      int height;
};

class Square: protected Shape {
   public:
      void setSize(int s) {
         width = s;
         height = s;
      }
      int getArea() {
         return (width * height);
      }
};

int main() {
   Square Sq;

   Sq.setSize(5);

   // 输出对象的面积
   cout << "Total area: " << Sq.getArea() << endl;

   return 0;
}

运行结果为:

Total area: 25

总结

通过继承,子类可以获得父类的变量和函数,从而复用代码。C++中继承有三种类型:公有继承、私有继承和保护继承,不同的继承类型对父类成员的访问权限也不同。应该根据实际需求选择合适的继承类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你掌握C++中的继承 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • C 标准库 math.h

    首先我们来介绍一下 C 标准库 math.h。 math.h 是 C 标准库的一部分,提供了数学计算相关的函数。使用时需要在程序中包含 math.h 头文件。以下是部分常用的 math.h 函数: 基本数学函数 fabs(x):返回 x 的绝对值 sqrt(x):返回 x 的平方根 pow(x, y):返回 x 的 y 次幂 exp(x):返回 e 的 x …

    C 2023年5月10日
    00
  • Qt物联网管理平台之实现自动清理早期数据功能

    Qt物联网管理平台之实现自动清理早期数据功能 引言 随着物联网技术的发展,设备上传的数据越来越多,对数据存储和查询的要求也越来越高。然而,大量的历史数据会占用大量的存储空间,对系统造成一定的负担。因此,需要实现自动清理早期数据的功能,以减少系统负担。 本文将介绍如何在Qt物联网管理平台中实现自动清理早期数据功能。 实现方法 1. 数据库设计 首先,需要对数据…

    C 2023年5月23日
    00
  • 30个常见的电脑蓝屏代码分析及解决方法

    下面是详细讲解“30个常见的电脑蓝屏代码分析及解决方法”的完整攻略。 1. 什么是蓝屏代码 在使用电脑的过程中,有时候我们会突然遇到一个蓝色的错误屏幕,这就是电脑的蓝屏。蓝屏代码是出现蓝屏时显示在屏幕上的错误代码,是指出错的十六进制数字和英文字母的组合。通过分析蓝屏代码,我们可以快速定位问题并解决。 2. 常见的蓝屏代码 接下来,我们介绍一些常见的蓝屏代码及…

    C 2023年5月30日
    00
  • C++实现延迟的方法详解

    C++实现延迟的方法详解 在C++编程中,我们经常需要实现延迟的效果。比如等待一定时间后再执行某个动作,或者在某个时间点执行某个动作。本文将介绍几种实现延迟的方法,并附带示例说明。 方法一:使用sleep函数 sleep函数可以让当前线程暂停一定的时间,然后再继续执行。其原型为: unsigned int sleep(unsigned int seconds…

    C 2023年5月22日
    00
  • Windows10下通过MinGW-x64搭建c/c++环境配置和使用方法

    下面是详细讲解“Windows10下通过MinGW-x64搭建c/c++环境配置和使用方法”的完整攻略。 1. 下载MinGW-x64 首先,我们需要下载MinGW-x64的安装包。在官网上(https://osdn.net/projects/mingw/releases/)选择你需要的版本进行下载。 2. 安装MinGW-x64 下载完成后,我们需要安装M…

    C 2023年5月23日
    00
  • C语言实现高精度加减法

    C语言实现高精度加减法 简介 高精度计算是指多位数的加、减、乘、除等算法。在计算机程序设计中,常常需要进行高精度计算。C语言是一种强大的编程语言,可以通过C语言实现高精度的加、减法运算。 实现思路 1. 字符串存储 高精度计算需要用到大量的数字,超过了C语言中能够表示的整型、浮点型数据类型范围,因此可以采用字符串存储数字。 2. 进位处理 在高精度计算中,进…

    C 2023年5月23日
    00
  • Windows 2008 R2服务管理器刷新失败的解决方法

    Windows 2008 R2服务管理器刷新失败的解决方法 在Windows Server 2008 R2操作系统中,你可能会遇到服务管理器刷新失败的问题。在本篇文章中,我们将讨论此问题的原因以及如何解决它。 问题原因 当服务管理器尝试刷新时,它将读取注册表中的服务配置信息。 如果服务配置已损坏,服务管理器将无法正确刷新服务列表。 解决方法 以下是一些方法,…

    C 2023年5月23日
    00
  • C++中的friend友元函数详细解析

    让我来详细讲解一下“C++中的friend友元函数详细解析”的完整攻略。 什么是友元函数 在C++中,一个类的成员函数和成员变量通常只能被该类的对象使用。但是有些时候,我们需要在类外部的函数中使用该类的私有成员,这个时候可以使用友元函数。 友元函数是在类内部声明,在类外部定义的非成员函数,友元函数拥有访问该类的私有成员变量和私有成员函数的权限。友元函数可以在…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部