下载此文档

c++5数据的共享与保护.ppt


文档分类:IT计算机 | 页数:约66页 举报非法文档有奖
1/66
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/66 下载此文档
文档列表 文档介绍
1
第五章数据的共享与保护
作用域与可见性
对象的生存期
数据与函数
静态成员
友元[下半场]
共享数据的保护
编译预处理命令[下半场]
多文件结构和工程[下半场]
深度探索[下半场]
2
函数原形的作用域
函数原型中的参数,其作用域始于 "(",结束于")"。
例如,设有下列原型声明:
double area(double radius);
radius 的作用域仅在于此,不能用于程序正文其他地方,因而可有可无。
作用域与可见性
3
局部作用域
函数的形参,在块中声明的标识符,其作用域自声明处起,限于块中,例如:
void fun(int a) {
int b = a;
cin >> b;
if (b > 0) {
int c;
......
}
}
c的作用域
b的作用域
作用域与可见性
a的作用域
4
类作用域
类作用域作用于特定的成员名。
类X的成员m具有类作用域,对m的访问方式如下:
如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员m。
::m访问。
通过表达式ptr->m
作用域与可见性
5
命名空间
命名空间可以解决类名、函数名等的命名冲突
命名空间的声明
namespace 命名空间名{
各种声明(函数声明、类声明、……)
}

namespace SomeNs {
class SomeClass { ... };
}
特殊的命名空间
全局命名空间:默认的命名空间
匿名命名空间:对每个源文件是唯一的
作用域与可见性
命名空间作用域
一个命名空间确定了一个命名空间作用域
引用其它命名空间作用域中的标识符
命名空间名::标识符名
例:声明一个SomeClass型的对象
SomeNs::SomeClass obj1;
将其它命名空间作用域的标识符暴露于当前作用域
对指定标识符
using 命名空间名::标识符名;
对所有标识符
using namespace 命名空间名;
6
作用域与可见性
7
可见性
可见性是从对标识符的引用的角度来谈的概念
可见性表示从内层作用域向外层作用域“看”时能看见什么。
如果标识在某处可见,则就可以在该处引用此标识符。
块作用域
类作用域
命名空间作用域
作用域与可见性
8
可见性
标识符应声明在先,引用在后。
如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。
对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。
作用域与可见性
9
同一作用域中的同名标识符
在同一作用域内的对象名、函数名、枚举常量名会隐藏同名的类名或枚举类型名。
重载的函数可以有相同的函数名。
作用域与可见性
10
#include <iostream>
using namespace std;
int i; //在全局命名空间中的全局变量
namespace Ns {
int j; //在Ns命名空间中的全局变量
}
void main(void) {
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
}//main
作用域与可见性

c++5数据的共享与保护 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息