第五部分  作用域、静态变量、友元、多文件操作

来源:互联网 发布:c语言百度云资源 编辑:程序博客网 时间:2024/05/16 04:39

作用域:是标识符的有效范围;
可见性:标识符是否可以引用的问题;  就是在这个地方能不能用

作用域
1、 函数原型的作用域
函数原型中的参数,其作用域始于"(",结束于 ")"。
例如:设有下列原型声明:
  double fun(double a);  //a可有可无
2、块作用域
块是一对花括号括起来的一段程序单元。
在块中声明的标识符,其作用域从声明处开始,直到块结束的右花括号。
例如:

void fun(int a){ int b(a); cin>>b; ……}

3、类作用域
可以将类看成是一组有名成员的集合,除个别例外情况外,类作用域用于特定的成员名
,类及其对象有特殊的访问和作用域规则。
4、文件作用域

int i =5;  //文件作用域int main(){cout<<i<<endl;return 0;}

生存期
静态生存期  (存在栈区)
在文件作用域中声明的对象具有这种生存期。
在函数内部声明静态生存期对象,要冠以关键字static。

动态生存期
开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。


全局变量

静态成员
 使用类中的静态数据成员-解决访问权限控制问题
统计一个班参加考试的人数,每一位都有一个考号,姓名,
可以在数据成员中定义一个static 用于统计参加考试人数

使用静态成员函数-解决操作合法性控制问题。
静态成员函数   类名::函数()或对象名来调用静态成员函数 

 类外代码可以使用类名和作用域操作符来调用静态成员函数
 
 静态成员函数属于整个类的

 友元
想访问私有数据成员,但又不想每次都调用公有成员函数。
所有定义一个友元函数,可以访问私有数据成员

友元是C++提供的一种破坏数据封装和数据隐藏的机制。

1.在类中声明一个函数为这个类的友元,这样在类外就可以通过对象来访问私有数据成员,

而不需要通过公有成员函数访问。

2.class B想对 class A的私有数据成员进行访问,就可以在class A声明 class B为class A的友元

class A

{

friend  class B;

……

}

class B

{}
可以使用友元函数和友元类。
为了确保数据的完整性,及数据封装与隐藏的机制,应少用。

 

共享数据的保护

常类型
常类型的对象必须进行初始化,而且不能被更新。
常引用: const  类型说明符 &引用名
常对象: 类名 const 对象名

编译预处理命令
多文件结构和工程

 

0 0