所有的 C++ 程序都有以下两个基本要素:
程序语句(代码):这是程序中执行动作的部分,它们被称为函数。
程序数据:数据是程序的信息,会受到程序函数的影响。
封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。
数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。
C++ 通过创建类来支持封装和数据隐藏(public、protected、private)。
默认情况下,在类中定义的所有项目都是私有的。
class Box
{
public:
double getVolume(void)
{
return length * breadth * height;
}
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
变量 length、breadth 和 height 都是私有的(private)。这意味着它们只能被 Box 类中的其他成员访问,而不能被程序中其他部分访问。这是实现封装的一种方式。
为了使类中的成员变成公有的(即,程序中的其他部分也能访问),必须在这些成员前使用 public 关键字进行声明。所有定义在 public 标识符后边的变量或函数可以被程序中所有其他的函数访问。
C++ 程序中,任何带有公有和私有成员的类都可以作为数据封装和数据抽象的实例。请看下面的实例:
#include <iostream>
using namespace std; class Adder{
public:
// 构造函数
Adder(int i = )
{
total = i;
}
// 对外的接口
void addNum(int number)
{
total += number;
}
// 对外的接口
int getTotal()
{
return total;
};
private:
// 对外隐藏的数据
int total;
};
int main( )
{
Adder a; a.addNum();
a.addNum();
a.addNum(); cout << "Total " << a.getTotal() <<endl;
return ;
}
上面的类把数字相加,并返回总和。公有成员 addNum 和 getTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是对外隐藏的,用户不需要了解它,但它又是类能正常工作所必需的。
设计策略
通常情况下,都会设置类成员状态为私有(private),除非我们真的需要将其暴露,这样才能保证良好的封装性。
这通常应用于数据成员,但它同样适用于所有成员,包括虚函数。

最新文章

  1. MATLAB地图工具箱学习总结(四)自定义投影
  2. Python:常见操作字符串的函数
  3. maven安装(linux)
  4. 打开mmc后添加单元,出现停止工作的解决方法
  5. Selenium获取input输入框中值的三种方法
  6. Hadoop 的部署适用性(网上资料http://www.linuxidc.com/Linux/2013-10/92141.htm)
  7. Qt4在linux下的安装
  8. APP导致界面卡死,iPhone卡死
  9. python安装paramiko需要的依赖
  10. Java Web 高性能开发,第 1 部分: 前端的高性能
  11. Android DownloadManager 的使用
  12. 第二章 深入C#数据类型
  13. 牛客寒假算法基础集训营6 E 海啸
  14. ASCII码表以及不同进制间的O(1)转换
  15. springMVC 防重校验(拦截器)
  16. 深入理解Java中的逃逸分析
  17. PAT——1054. 求平均值
  18. 【BZOJ3197】[SDOI2013]刺客信条
  19. ES6的新特性(7)——函数的扩展
  20. Android学习——ListView的缓存机制

热门文章

  1. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:表示成功的操作
  2. thymeleaf html5
  3. HTML相关知识点(3)
  4. JS echarts统计
  5. java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1
  6. Nginx 的优势
  7. redis5.5官方文档
  8. Vue-cli3与springboot项目整合打包
  9. Docker + Maven + Docker-compose
  10. 论文阅读:Blink-Fast Connectivity Recovery Entirely in the Data Plane