# C++ 中的抽象

> 原文： [https://beginnersbook.com/2017/09/abstraction-in-c-with-example/](https://beginnersbook.com/2017/09/abstraction-in-c-with-example/)

抽象是[面向对象编程](https://beginnersbook.com/2017/08/cpp-oops-concepts/)的功能之一，您只需向用户显示相关详细信息并隐藏不相关的详细信息。例如，当您向某人发送电子邮件时，您只需单击“发送”即可获得成功消息，单击“发送”时实际发生的情况，数据通过网络传输给收件人的方式对您来说是隐藏的（因为它与您无关） 。

让我们看看如何使用访问说明符在 C++ 程序中实现：

## 抽象示例

```cpp
#include <iostream>
using namespace std;
class AbstractionExample{
private:
   /* By making these data members private, I have
    * hidden them from outside world.
    * These data members are not accessible outside
    * the class. The only way to set and get their
    * values is through the public functions.
    */
   int num;
   char ch;

public:
   void setMyValues(int n, char c) {
      num = n; ch = c;
   }
   void getMyValues() {
      cout<<"Numbers is: "<<num<< endl;
      cout<<"Char is: "<<ch<<endl;
   }
};
int main(){
   AbstractionExample obj;
   obj.setMyValues(100, 'X');
   obj.getMyValues();
   return 0;
}
```

**输出：**

```cpp
Numbers is: 100
Char is: X
```

## 数据抽象的优势

使用此功能的主要优点是，当代码发展并且您需要在代码中进行一些调整时，您只需要修改已将成员声明为私有的高级类。由于没有类直接访问这些数据成员，因此您无需更改低级别（用户级别）类代码。

想象一下，如果您将这些数据成员公开，如果在某些时候您想要更改代码，则必须对直接访问成员的所有类进行必要的调整。

**数据抽象的其他优点是：**

1）通过使数据私有化并避免可能破坏数据的用户级错误，使应用安全。

2）这避免了代码重复并增加了代码的可重用性。