第3章5C程序的结构.ppt
《第3章5C程序的结构.ppt》由会员分享,可在线阅读,更多相关《第3章5C程序的结构.ppt(47页珍藏版)》请在三一办公上搜索。
1、C+程序的结构,计算机科学与技术学院 曲立平Email:,哈尔滨工程大学计算机科学与技术学院,哈尔滨工程大学计算机科学与技术学院,函数原型的作用域,函数原型中的参数,其作用域始于(,结束于)。例:设有下列原型声明:double Area(double radius);,radius 的作用域仅在于此,不能用于程序正文其它地方,因而可有可无。,哈尔滨工程大学计算机科学与技术学院,块作用域,在块中声明的标识符,其作用域自声明处起,限于块中。例:void fun(int a)int b(a);cinb;if(b0)int c;.,哈尔滨工程大学计算机科学与技术学院,类作用域,类作用域作用于特定的成员
2、名。类X的成员M具有类作用域,对M的访问方式如下:如果在X的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员M。通过表达式x.M或者X:M访问。通过表达式prt-M,哈尔滨工程大学计算机科学与技术学院,类作用域,#include class C public:C(int v):X(v)void SetX(int X)C:X=X;/this-X=X;正确int GetX()return X;private:int X;void main(void)C c(1);c.SetX(5);coutc.GetX();,哈尔滨工程大学计算机科学与技术学院,文件作用域,不在前述各个作用域中
3、出现的声明,具有文件作用域,这样声明的标识符的作用域开始于声明点,结束于文件尾。,哈尔滨工程大学计算机科学与技术学院,可见性,可见性是从对标识符的引用的角度来谈的概念。可见性表示从内层作用域向外层作用域“看”时能看见什么。如果标识在某处可见,则就可以在该处引用此标识符。,块作用域,哈尔滨工程大学计算机科学与技术学院,可见性,标识符应声明在先,引用在后。如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见。对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。,哈尔滨工程大学计算机科学与技术学院,同一作用域中的同名
4、标识符,在同一作用域内的对象名、函数名、枚举常量名会隐藏同名的类名或枚举类型名。重载的函数可以有相同的函数名。,哈尔滨工程大学计算机科学与技术学院,例:文件作用域与块作用域,#includeint i;int main()i=5;int i;i=7;couti=iendl;couti=i;return 0;,/文件作用域,/块作用域,/输出7,/输出5,哈尔滨工程大学计算机科学与技术学院,例:非类型名隐藏类型名,Class Sample/定义类/;void func(int Sample)/函数形参隐藏了类名class Sample a;/定义一个对象要用到类名 Sample+;/形参的算术运
5、算/,类名被函数的形参覆盖,函数内定义类对象,需加前缀class,哈尔滨工程大学计算机科学与技术学院,例:类型名隐藏了一个非类型名,int s=0;/全局变量void func()class s/;/类名s隐藏了全局变量s s a;:s=3;/class s作用域结束int g=s;/用全局变量s给变量g初始化,哈尔滨工程大学计算机科学与技术学院,例:一个名字不能同时指两种类型,class C/;typedef int C;,/错误:又定义一个类型取同名,哈尔滨工程大学计算机科学与技术学院,例:非类型名不能重名,Student a;void a();,/error:函数名与对象名同名,非类型名
6、:变量名、常量名、函数名、对象名或枚举成员,哈尔滨工程大学计算机科学与技术学院,例:非类型名与类型名相同,int f;class f/;class f g;,哈尔滨工程大学计算机科学与技术学院,哈尔滨工程大学计算机科学与技术学院,对象的生存期,含义对象从产生到结束的这段时间就是它的生存期。在对象生存期内,对象将保持它的值,直到被更新为止。分类静态生存期动态生存期,哈尔滨工程大学计算机科学与技术学院,/文件作用域,i具有静态生存期,这种生存期与程序的运行期相同。在文件作用域中声明的对象具有这种生存期。在函数内部声明静态生存期对象,要冠以关键字static。例:,静态生存期,#includeint
7、 i=5;int main()couti=iendl;return 0;,哈尔滨工程大学计算机科学与技术学院,块作用域中声明的,没有用static修饰的对象是动态生存期的对象(习惯称局部生存期对象)。开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。例:,动态生存期,#includevoid fun();void main()fun();fun();void fun()static int a=1;int i=5;a+;i+;couti=i,a=aendl;,运行结果:i=6,a=2i=6,a=3,i是动态生存期,a是静态生存期,哈尔滨工程大学计算机科学与技术学院,例:变量的生存期与
8、可见性,#includeint i=1;void main(void)static int a;int b=-10;int c=0;void other(void);cout-MAIN-n;cout i:i a:a b:b c:cendl;c=c+8;other();cout-MAIN-n;cout i:i a:a b:b c:cendl;i=i+10;other();,/i 为全局变量,具有静态生存期。,/静态局部变量,有全局寿命,局部可见。,/b,c为局部变量,具有动态生存期。,哈尔滨工程大学计算机科学与技术学院,例:变量的生存期与可见性,void other(void)static in
9、t a=2;static int b;int c=10;a=a+2;i=i+32;c=c+5;cout-OTHER-n;cout i:i a:a b:b c:cendl;b=a;,/a,b为静态局部变量,具有全局寿命,局部可见。只第一次进入函数时被初始化。,/C为局部变量,具有动态生存期,每次进入函数时都初始化。,运行结果:-MAIN-i:1 a:0 b:-10 c:0-OTHER-i:33 a:4 b:0 c:15-MAIN-i:33 a:0 b:-10 c:8-OTHER-i:75 a:6 b:4 c:15,哈尔滨工程大学计算机科学与技术学院,例:具有静动态生存期对象的程序,#includ
10、eclass Clock/时钟类声明public:/外部接口Clock();void SetTime(int NewH,int NewM,int NewS);void ShowTime();Clock()private:/私有数据成员int Hour,Minute,Second;,/三个形参均具有函数原型作用域,哈尔滨工程大学计算机科学与技术学院,例:具有静动态生存期对象的程序,/时钟类成员函数实现Clock:Clock()/构造函数Hour=0;Minute=0;Second=0;void Clock:SetTime(int NewH,int NewM,int NewS)Hour=NewH;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 结构

链接地址:https://www.31ppt.com/p-5912625.html