软件开发入门教程网 Search之C++ 接口(抽象类)

简介: 软件开发入门教程网 Search之C++ 接口(抽象类)

 C++ 基本的输入输出


    📒博客主页:  iOS游戏开发博客主页


    🎉欢迎关注🔎点赞👍收藏⭐留言📝


    📌本文由iOS游戏开发原创!


    📆51CTO首发时间:🌴2022年12月12日🌴


   ✉️这世界很喧嚣,做自己就好!


   🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!


⭐本文介绍⭐


接口描述了类的行为和功能,而不需要完成类的特定实现。


C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。


如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:


1
class Box
2
{
3
   public:
4
      // 纯虚函数
5
      virtual double getVolume() = 0;
6
   private:
7
      double length;      // 长度
8
      double breadth;     // 宽度
9
      double height;      // 高度
10
};


设计抽象类 (通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。


因此,如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重写纯虚函数,就尝试实例化该类的对象,会导致编译错误。


可用于实例化对象的类被称为具体类。


抽象类的实例


请看下面的实例,基类 Shape 提供了一个接口 getArea() ,在两个派生类 Rectangle 和 Triangle 中分别实现了 getArea():


实例



1
#include <iostream>
2
3
using namespace std;
4
5
// 基类
6
class Shape 
7
{
8
public:
9
   // 提供接口框架的纯虚函数
10
   virtual int getArea() = 0;
11
   void setWidth(int w)
12
   {
13
      width = w;
14
   }
15
   void setHeight(int h)
16
   {
17
      height = h;
18
   }
19
protected:
20
   int width;
21
   int height;
22
};
23
24
// 派生类
25
class Rectangle: public Shape
26
{
27
public:
28
   int getArea()
29
   { 
30
      return (width * height); 
31
   }
32
};
33
class Triangle: public Shape
34
{
35
public:
36
   int getArea()
37
   { 
38
      return (width * height)/2; 
39
   }
40
};
41
42
int main(void)
43
{
44
   Rectangle Rect;
45
   Triangle  Tri;
46
47
   Rect.setWidth(5);
48
   Rect.setHeight(7);
49
   // 输出对象的面积
50
   cout << "Total Rectangle area: " << Rect.getArea() << endl;
51
52
   Tri.setWidth(5);
53
   Tri.setHeight(7);
54
   // 输出对象的面积
55
   cout << "Total Triangle area: " << Tri.getArea() << endl; 
56
57
   return 0;
58
}


当上面的代码被编译和执行时,它会产生下列结果:



从上面的实例中,我们可以看到一个抽象类是如何定义一个接口 getArea(),两个派生类是如何通过不同的计算面积的算法来实现这个相同的函数。


设计策略


面向对象的系统可能会使用一个抽象基类为所有的外部应用程序提供一个适当的、通用的、标准化的接口。然后,派生类通过继承抽象基类,就把所有类似的操作都继承下来。


外部应用程序提供的功能(即公有函数)在抽象基类中是以纯虚函数的形式存在的。这些纯虚函数在相应的派生类中被实现。


这个架构也使得新的应用程序可以很容易地被添加到系统中,即使是在系统被定义之后依然可以如此。



🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!


dd9d031a0a5d4f35bdd166cf4284455f.png



目录
相关文章
|
1月前
|
算法 编译器 C语言
C++-带你深度理解string类的常见接口
C++-带你深度理解string类的常见接口
30 0
|
30天前
|
缓存 算法 C语言
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
【C++ 标准查找算法 】C++标准库查找算法深入解析(In-depth Analysis of C++ Standard Library Search Algorithms)
46 0
|
8天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。
|
30天前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
70 2
|
30天前
|
存储 移动开发 安全
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
【C/C++ 口语】C++ 编程常见接口发音一览(不断更新)
22 0
|
设计模式 XML C++
C++组合模式探索:以统一接口管理复杂的层次结构
C++组合模式探索:以统一接口管理复杂的层次结构
34 1
|
1月前
|
C++
C++ 接口的实现,及作用通俗理解方式
C++中的接口,一般就是指抽象类,是一种用来描述类对外提供的操作、方法或功能的集合——注意,一般只是描述(声明),而不对这些方法或功能进行定义实现,通常在
31 2
|
1月前
|
缓存 网络安全 调度
C++ Qt开发:QNetworkAccessManager网络接口组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QNetworkAccessManager`组件实现Web网页访问。QNetworkAccessManager是Qt网络模块中的关键类,用于管理网络访问和请求。作为一个网络请求的调度中心,它为Qt应用程序提供了发送和接收各种类型的网络请求的能力,包括常见的GET、POST、PUT、DELETE等。这个模块的核心功能在于通过处理`QNetworkReply`和`QNetworkRequest`来实现
22 0
C++ Qt开发:QNetworkAccessManager网络接口组件
|
1月前
|
监控 C++ 索引
C++ Qt开发:QNetworkInterface网络接口组件
在Qt网络编程中,`QNetworkInterface`是一个强大的类,提供了获取本地网络接口信息的能力。通过`QNetworkInterface`,可以轻松地获取有关网络接口的信息,包括接口的名称、硬件地址、IP地址和子网掩码等。这个类对于需要获取本地网络环境信息的应用程序特别有用,例如网络配置工具、网络监控程序等。`QNetworkInterface`通过提供一致而易于使用的接口,使得网络编程中的任务更加简便和可靠。
26 4
C++ Qt开发:QNetworkInterface网络接口组件
|
1月前
|
算法 C++
c++接口(抽象类)
c++接口(抽象类)
15 0