- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象程序设计-6讲述
第6讲 C++程序结构
习题讲解
4-19
4-20
3
本章主要内容
作用域与可见性
对象的生存期
数据与函数
静态成员
共享数据的保护
友元
编译预处理命令
多文件结构和工程
深度探索
4
函数原形的作用域
函数原型中的参数,其作用域始于(,结束于)。
例如,设有下列原型声明:
double area(double radius);
radius 的作用域仅在于此,不能用于程序正文其他地方,因而可有可无。
作用域与可见性
5
局部作用域
函数的形参,在块中声明的标识符,其作用域自声明处起,限于块中,例如:
void fun(int a) {
int b = a;
cin b;
if (b 0) {
int c;
......
}
}
作用域与可见性
a的作用域
6
类作用域
类作用域作用于特定的成员名。
类X的成员m具有类作用域,对m的访问方式如下:
如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员m。
通过表达式x.m或者X::m访问。
通过表达式ptr-M
作用域与可见性
7
命名空间
命名空间可以解决类名、函数名等的命名冲突
命名空间的声明
namespace 命名空间名 {
各种声明(函数声明、类声明、……)
}
例
namespace SomeNs {
class SomeClass { ... };
}
特殊的命名空间
全局命名空间:默认的命名空间
匿名命名空间:对每个源文件是唯一的(注意其作用)
作用域与可见性
命名空间作用域
一个命名空间确定了一个命名空间作用域
引用其它命名空间作用域中的标识符
命名空间名::标识符名
例:声明一个SomeClass型的对象
SomeNs::SomeClass obj1;
将其它命名空间作用域的标识符暴露于当前作用域
对指定标识符
using 命名空间名::标识符名;
对所有标识符
using namespace命名空间名;
8
作用域与可见性
9
可见性
可见性是从对标识符的引用的角度来谈的概念
可见性表示从内层作用域向外层作用域“看”时能看见什么。
如果标识在某处可见,则就可以在该处引用此标识符。
作用域与可见性
10
可见性
标识符应声明在先,引用在后。
如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。
对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。
作用域与可见性
11
同一作用域中的同名标识符
在同一作用域内的对象名、函数名、枚举常量名会隐藏同名的类名或枚举类型名。
重载的函数可以有相同的函数名。
作用域与可见性
12
#include iostream
using namespace std;
int i; //在全局命名空间中的全局变量
namespace Ns {
int j; //在Ns命名空间中的全局变量
}
int main() {
i = 5; //为全局变量i赋值
Ns::j = 6; //为全局变量j赋值
{ //子块1
using namespace Ns; //当前块中可以直接引用Ns中的标识符
int i; //局部变量,局部作用域
i = 7;
cout i = i endl;//输出7
cout j = j endl;//输出6
}
cout i = i endl; //输出5
return 0;
}
作用域与可见性
例 5.1
13
对象的生存期
对象从产生到结束的这段时间就是它的生存期。在对象生存期内,对象将保持它的值,直到被更新为止。
14
静态生存期
这种生存期与程序的运行期相同。
在文件作用域中声明的对象具有这种生存期。
在函数内部声明静态生存期对象,要冠以关键字static 。
只生成一次,只初始化一次
对象的生存期
15
#includeiostream
using namespace std;
int i = 5; //文件作用域
int main() {
cout i= i endl;
return 0;
}
i具有静态生存期
对象的生存期
例
16
动态生存期
块作用域中声明的,没有用static修是的对象是动态生存期的对象(习惯称局部生存期对象)。
开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。
对象的生存期
17
#include iostream
using namespace std;
void fun();
int main() {
fun();
fun();
}
void fun() {
s
您可能关注的文档
- 食品生许可证分类目录详解.docx
- 非谓语动词课件讲述.ppt
- 非谓语动词与with复合结构讲述.ppt
- 非谓语动词-动名词和分词讲述.ppt
- 非谓语动词间句法功能讲述.ppt
- 非谓语动词语法专题训练课件-副本讲述.ppt
- 非谓语动词的意义讲述.ppt
- 非谓语动词运用(Linda更新)讲述.ppt
- 非谓语动词精讲含近几年高考题讲述.ppt
- 非谓语动词.PPT讲述.ppt
- 2024至2030年中国人造棉面料行业投资前景及策略咨询报告.docx
- 重庆市渝中区遴选公务员2024年国家公务员考试考试大纲历年真题10340笔试历年典型考题及解题思路附.docx
- 2024至2030年中国甲基苯乙酮行业深度调研及发展预测报告.docx
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
文档评论(0)