C++ 数据封装的方法,重点是其编程思想

简介: 在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现

数据封装

先说一下概念吧!

在C++中,数据封装一般指的是将数据和操作这些数据的函数绑定在一起的程序设计方式。通常使用C++的类来实现。

作用

C++中,数据封装是C++面向对象编程的一种核心概念。

通过数据封装,即将数据和操作数据的函数绑定(封装)在一个类之中,可以产生一种“局部空间”的作用,类似于局部变量,如此各个空间,即各个类就有了各自的“屏障”,可以使变量之间是互不打扰、互不污染的(安全性),然后各司其职,完成程序的工作。可以想象一下,如此一来,C++面向对象的程序之中,各个类就好像一个个组件一样(简化程序),打个比方,就像手机的组件电池用于供电、手机CPU用于运算、手机屏幕则用于输出显示等等。

除此之外,值得一提的是,C++中类的成员在默认情况下(即不指定访问修饰符的情况)都是私有成员,即只能被类中的成员访问,而不能被类外部直接访问,这也是一种保护机制,就像上面所提到的“屏障”。

因此,确切来说,这更应该是一种面向对象的编程思想(可参照下方的实例代码,会发现,这和之前的章节介绍的C++的类的定义好像没什么区别,因此鄙人认为,这更应该是一种编程思想)。

数据封装方法

C++数据封装的方式可能不止一种,下面介绍的仅仅只是其中一种:

将数据定义为类的私有成员,将操作数据的函数定义为类公有成员函数。

数据封装实例代码

#include <iostream>
using namespace std;


class Fruit{
    public:
        // 构造函数
        Fruit(string n, int p){
            name = n;
            price = p;
        }
        void getData(){
            cout << "这是:" << name << endl;
            cout << "价格是:" << price << endl;
        }

    private:
        // 私有成员
        string name;
        int price;
};

int main(){
    Fruit apple("苹果", 6);
    apple.getData();
    return 0;
}

编译运行后,得到输出:

这是:苹果
价格是:6

原文:C++ 数据封装的方法,重点是其编程思想

免责声明:内容仅供参考,不保证正确性。

相关文章
|
11天前
|
存储 算法 搜索推荐
【C++面向对象——群体类和群体数据的组织】实现含排序功能的数组类(头歌实践教学平台习题)【合集】
1. **相关排序和查找算法的原理**:介绍直接插入排序、直接选择排序、冒泡排序和顺序查找的基本原理及其实现代码。 2. **C++ 类与成员函数的定义**:讲解如何定义`Array`类,包括类的声明和实现,以及成员函数的定义与调用。 3. **数组作为类的成员变量的处理**:探讨内存管理和正确访问数组元素的方法,确保在类中正确使用动态分配的数组。 4. **函数参数传递与返回值处理**:解释排序和查找函数的参数传递方式及返回值处理,确保函数功能正确实现。 通过掌握这些知识,可以顺利地将排序和查找算法封装到`Array`类中,并进行测试验证。编程要求是在右侧编辑器补充代码以实现三种排序算法
27 5
|
4月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
57 6
|
4月前
|
数据安全/隐私保护 C语言 C++
C++(七)封装
本文档详细介绍了C++封装的概念及其应用。封装通过权限控制对外提供接口并隐藏内部数据,增强代码的安全性和可维护性。文档首先解释了`class`中的权限修饰符(`public`、`private`、`protected`)的作用,并通过示例展示了如何使用封装实现栈结构。接着介绍了构造器和析构器的使用方法,包括初始化列表的引入以及它们在内存管理和对象生命周期中的重要性。最后,通过分文件编程的方式展示了如何将类定义和实现分离,提高代码的模块化和复用性。
|
5月前
|
存储 算法 C++
C++ STL应用宝典:高效处理数据的艺术与实战技巧大揭秘!
【8月更文挑战第22天】C++ STL(标准模板库)是一组高效的数据结构与算法集合,极大提升编程效率与代码可读性。它包括容器、迭代器、算法等组件。例如,统计文本中单词频率可用`std::map`和`std::ifstream`实现;对数据排序及找极值则可通过`std::vector`结合`std::sort`、`std::min/max_element`完成;而快速查找字符串则适合使用`std::set`配合其内置的`find`方法。这些示例展示了STL的强大功能,有助于编写简洁高效的代码。
65 2
|
5月前
|
编译器 C++
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
|
4月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
135 0
|
5月前
|
存储 安全 数据处理
【C++】C++ 超市会员卡管理系统(面向对象)(源码+数据)【独一无二】
【C++】C++ 超市会员卡管理系统(面向对象)(源码+数据)【独一无二】
136 1
|
5月前
|
C++
C++ 避免多重定义的方法
C++ 避免多重定义的方法
69 0
|
5月前
|
Dart API C语言
Dart ffi 使用问题之想在C/C++中创建异步线程来调用Dart方法,如何操作
Dart ffi 使用问题之想在C/C++中创建异步线程来调用Dart方法,如何操作
|
11天前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
51 18