当前课程知识点:C++语言程序设计基础 > 第5章 数据的共享与保护 > 第5章小结 > 小结
小结
l主要内容
n 作用域与可见性、对象的生存期、数据的共享与保护、友元、编译预处理命令、多文件结构和工程
l达到的目标
n 理解并能够运用作用域与可见性、对象的生存期
n 掌握函数之间、类之间、对象之间数据的共享与保护方法。
n 掌握编译预处理命令,学会用多文件结构和工程
大家好
欢迎回来继续学习
C++语言程序设计
到现在呢
第五章我们就都学完了
回顾一下
我们在第五章中学习了
标识符的寿命 一个生存期
它的作用域
它的可见性这样几个概念
所以我们知道呢
在某个位置定义一个标识符
并不意味着它在哪儿都能用
也并不意味着
在整个程序运行期间
你定义的所有的标识符
都始终有效的
所以我们要了解一个标识符
当你定义了以后
它到底是静态生存期呢
还是动态生存期
我们知道全局作用域的标识符
就具有静态生存期
还有在局部作用域中定义的
用static描述的这种标识符
也是具有静态生存期的
那么动态生存期的标识符
离开它的作用域范围
它就消亡了
如果说在内层作用域
和外层作用域中
定义了同名的标识符
那么内层作用域的标识符呢
就会屏蔽
在外层作用域中定义的标识符
了解了这些呢
对于我们在程序模块之间
共享数据是非常有用的
另外说到共享数据
这一章还给大家介绍了
如何在同一个类的所有对象之间
共享数据
这是什么呢
这是类的静态数据成员
为了能够很好地处理
静态数据成员呢
我们通常要定义静态成员函数
用它来专门处理静态数据成员
还有呢
为了在模块之间传递参数的时候
能够效率比较高
有的时候我们喜欢用引用
作为函数的参数
但是顾及了这个传递效率高
那么
又另外一个方面容易被忽视
就是就是你传递的这个数据
它的安全性
因为引用做参数
是可以使数据双向传递的
那这个时候怎么办呢
我们可以用常引用
实际上呢
在模块与模块之间
共享数据的时候
我们不仅可以甚至常引用
还有其他的常类型可以定义
比如说我们可以定义常对象
使得常对象
在整个程序的运行期间
在它的整个寿命
也就是生存期之中
都不能再改变
常对象一旦定义以后
初始化好
它不管到了什么时候
只要在它的生存期期间内
都不可改变它
我们还可以定义类里面的常成员
比如说类里面的常成员函数
它的作用基本上就是
专门用来处理常对象的
因为这样的常成员函数呢
它是承诺我不改变对象的状态
那编译器
在编译常成员函数的时候
也会特殊地做这样的检查
看你有没有语句改变对象状态了
如果有就会报错
那在类中
还可以定义常数据成员
常数据成员可以是对象的成员
也可以是静态的
属于整个类的成员
我们在类中除了暴露少量的
对外访问接口
使得别人可以方便地
使用这个类以外
其他的一些细节信息
比如说一些功能实现的细节
作为函数
一些数据细节作为数据成员
可能都会被定义成私有的
不希望对外暴露
不希望对外暴露
这样使用者用起来方便
他不知道细节也可以用
另外呢
我们具体的算法实现细节
可以隐藏
数据可以得到保护
但是呢
这也造成了类外的函数
或者其他的类
要访问这个类的对象的
数据的时候
总要调用它的公有接口函数
这样会在一定程度上
影响到运行的效率
那么这个时候我们可以在效率
与数据安全性方面
做一个平衡
比如说授权某些特殊的函数
和特殊的类
让它们是友元
于是它们就能够访问
类的私有成员了
那么授权友元的同时呢
也可以给这个友元函数的参数
设置成常类型的
那么它就是不能
做参数的双向传递
我们在这一章呢
还介绍了编译预处理
和多文件的工程
那么我们可以用编译预处理命令
使指示编译器
在什么情况下
编译哪些内容
不编译哪些内容
我们可以用编译预处理命令
将其他的头文件包括到
当前程序文件中来
那么在规模稍微大一点的程序中
需要多人合作的程序中
我们很多时候是把程序
划分到多个文件中去的
然后这多个文件可以分别编译
最后连接到一起
它们作为一个工程里面的文件
那么这就是第五章
我们关于数据共享
与保护的内容
学完了第五章以后
大家应该觉得
我们的编程能力已经大大提高了
我们可以定义基本数据类型
可以定义类类型
可以做各种各样的运算
还可以自如地
在程序的不同模块中间共享数据
以及保护数据
接下来的后面的章节呢
会有更多的更好的编程的技术
等大家去学习
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)