软件开发入门教程网 之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),除非我们真的需要将其暴露,这样才能保证良好的封装性

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

目录
相关文章
|
6月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
340 1
|
1月前
|
程序员 C++ 开发者
C++入门教程:掌握函数重载、引用与内联函数的概念
通过上述介绍和实例,我们可以看到,函数重载提供了多态性;引用提高了函数调用的效率和便捷性;内联函数则在保证代码清晰的同时,提高了程序的运行效率。掌握这些概念,对于初学者来说是非常重要的,它们是提升C++编程技能的基石。
21 0
|
3月前
|
C++
拥抱C++面向对象编程,解锁软件开发新境界!从混乱到有序,你的代码也能成为高效能战士!
【8月更文挑战第22天】C++凭借其强大的面向对象编程(OOP)能力,在构建复杂软件系统时不可或缺。OOP通过封装数据和操作这些数据的方法于对象中,提升了代码的模块化、重用性和可扩展性。非OOP方式(过程化编程)下,数据与处理逻辑分离,导致维护困难。而OOP将学生信息及其操作整合到`Student`类中,增强代码的可读性和可维护性。通过示例对比,可以看出OOP使C++代码结构更清晰,特别是在大型项目中,能有效提高开发效率和软件质量。
32 1
|
6月前
|
安全 数据安全/隐私保护 C++
c++数据封装
c++数据封装
43 2
|
5月前
|
自然语言处理 编译器 C语言
C++语言入门教程
C++语言入门教程
|
6月前
|
监控 API 数据安全/隐私保护
屏幕监控软件开发指南:C++实现原理解析
在当今数字化时代,屏幕监控软件成为了企业管理和个人隐私保护的重要工具。本文将深入探讨如何使用C++语言实现屏幕监控软件,并解析其实现原理。我们将通过多个代码示例来说明其工作方式,最后将介绍如何将监控到的数据自动提交到网站。
191 3
|
6月前
|
Linux 程序员 图形学
C++语言在现代软件开发中的应用与实践
C++语言在现代软件开发中的应用与实践
81 2
|
6月前
|
存储 数据安全/隐私保护 C++
C++ 数据封装
C++ 数据封装
39 0
|
6月前
|
Ubuntu 编译器 C++
【Conan 入门教程 】在Ubuntu上使用Conan编译C++第三方库:一站式解决方案
【Conan 入门教程 】在Ubuntu上使用Conan编译C++第三方库:一站式解决方案
1684 1
|
6月前
|
C++
C++ 数据封装的方法,重点是其编程思想
在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现
63 7