软件开发入门教程网 之C++ 数据封装

简介: 软件开发入门教程网 之C++ 数据封装

📒博客主页:  开心档博客主页

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

    📌本文由开心档原创!

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

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

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

⭐本文介绍⭐

所有的 C++ 程序都有以下两个基本要素:

  • **程序语句(代码):**这是程序中执行动作的部分,它们被称为函数。
  • **程序数据:**数据是程序的信息,会受到程序函数的影响。

封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏

数据封装 是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。

C++ 通过创建来支持封装和数据隐藏(public、protected、private)。我们已经知道,类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。默认情况下,在类中定义的所有项目都是私有的。例如:

1. class Box
2. {
3. public:
4. double getVolume(void)
5.       {
6. return length * breadth * height;
7.       }
8. private:
9. double length;      // 长度
10. double breadth;     // 宽度
11. double height;      // 高度
12. };

变量 length、breadth 和 height 都是私有的(private)。这意味着它们只能被 Box 类中的其他成员访问,而不能被程序中其他部分访问。这是实现封装的一种方式。

为了使类中的成员变成公有的(即,程序中的其他部分也能访问),必须在这些成员前使用 public 关键字进行声明。所有定义在 public 标识符后边的变量或函数可以被程序中所有其他的函数访问。

把一个类定义为另一个类的友元类,会暴露实现细节,从而降低了封装性。理想的做法是尽可能地对外隐藏每个类的实现细节。

数据封装的实例


C++ 程序中,任何带有公有和私有成员的类都可以作为数据封装和数据抽象的实例。请看下面的实例:

实例


1. #include <iostream>
2. using namespace std;
3. 
4. class Adder{
5. public:
6. // 构造函数
7. Adder(int i = 0)
8.       {
9.         total = i;
10.       }
11. // 对外的接口
12. void addNum(int number)
13.       {
14.           total += number;
15.       }
16. // 对外的接口
17. int getTotal()
18.       {
19. return total;
20.       };
21. private:
22. // 对外隐藏的数据
23. int total;
24. };
25. int main( )
26. {
27.    Adder a;
28. 
29.    a.addNum(10);
30.    a.addNum(20);
31.    a.addNum(30);
32. 
33.    cout << "Total " << a.getTotal() <<endl;
34. return 0;
35. }

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

1. 
2. Total 60

上面的类把数字相加,并返回总和。公有成员 addNumgetTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是对外隐藏的,用户不需要了解它,但它又是类能正常工作所必需的。

设计策略


通常情况下,我们都会设置类成员状态为私有(private),除非我们真的需要将其暴露,这样才能保证良好的封装性

这通常应用于数据成员,但它同样适用于所有成员,包括虚函数。

目录
相关文章
|
5月前
|
前端开发 算法 数据可视化
第三代软件开发-C++&QML交互
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
6月前
|
数据采集 搜索推荐 网络安全
软件开发入门教程网之软件开发入门教程网之C++ 常量
软件开发入门教程网之软件开发入门教程网之C++ 常量
24 0
|
1月前
|
C++
C++ 数据封装的方法,重点是其编程思想
在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现
36 7
|
1月前
|
存储 C++
C++数据封装
C++数据封装
12 1
|
1月前
|
C++
在C++如何实现数据封装?
在C++如何实现数据封装?
20 2
|
1月前
|
安全 C++
c++数据封装
c++数据封装
16 0
|
1月前
|
安全 程序员 C++
软件开发入门教程网之C++ 引用
软件开发入门教程网之C++ 引用
|
6月前
|
存储 C++
软件开发入门教程网之C++ 常量
软件开发入门教程网之C++ 常量
28 0
|
4月前
|
C语言 C++ iOS开发
嵌入式c++软件开发笔记 第六讲
嵌入式c++软件开发笔记 第六讲
16 0
|
4月前
|
算法 编译器 C++
嵌入式c++软件开发笔记第五讲
嵌入式c++软件开发笔记第五讲
17 0