C++面向对象:C++ 数据封装

全部的 C++ 程序都有如下两个基本要素:ios

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

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

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

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

class Box
{
public:
double getVolume(void)
      {
return length * breadth * height;
      }
private:
double length;      // 长度
double breadth;     // 宽度
double height;      // 高度
};

 

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

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

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

 

数据封装的实例

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

#include <iostream>
using namespace std;


class Adder{
public:
// 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
// 对外的接口
void addNum(int number)
{
          total += number;
      }
// 对外的接口
int getTotal()
{
return total;
      };
private:
// 对外隐藏的数据
int total;
};
int main( )
{
   Adder a;


   a.addNum(10);
   a.addNum(20);
   a.addNum(30);


cout << "Total " << a.getTotal() <<endl;
return 0;
}

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

Total60

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

设计策略

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

这一般应用于数据成员,但它一样适用于全部成员,包括虚函数。

 

若是你C/C++感兴趣,想学编程,小编推荐一个C/C++技术交流群【点击进入】!

涉及到了:编程入门、游戏编程、网络编程、Windows编程、Linux编程、Qt界面开发、黑客等等......

相关文章
相关标签/搜索