欢迎来到天天文库
浏览记录
ID:39963124
大小:370.43 KB
页数:79页
时间:2019-07-16
《c入门第五章数据的共享与保护x》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章—数据的共享与保护2本章主要内容作用域与可见性对象的生存期类的静态成员友元共享数据的保护多文件结构与编译预处理命令作用域Share_Protect.cpp(12):errorC2065:‘a':undeclaredidentifierWHY?#includeusingnamespacestd;intmain(intargc,char*argv[]){inti=10;while(i>0){inta=i+2;cout<2、见作用域函数原型作用域局部作用域类作用域名字空间作用域(全局作用域)4函数原型的作用域函数原型中的参数,其作用域始于"(",结束于")"。例如,设有下列原型声明:doublevolume(doubleradius);doubleArea(doubleradius);radius的作用域仅在于此,不能用于程序正文其它地方,因而可有可无。局部作用域在函数中声明的变量(对象),具有局部作用域函数形参:从声明之处起,至函数体结束止,有效函数体内声明的对象(变量),从声明之处起,至声明所在的块结束的大括号止局部变量:具有局部作用域的变3、量6局部作用域在块中声明的标识符,其作用域自声明处起,限于本块中,例如:voidfun(inta){intb(a);cin>>b;if(b>0){intc;......}……}c的作用域b的作用域a的作用域标准c++中:for(inti;i<10;i++){……}……vc6.0中:for(inti;i<10;i++){……}……8特别说明:VC6中,循环变量从定义之处起,在本函数内均有效i的作用域i的作用域类作用域类作用域:类定义内部和其所有成员函数的定义体。类的成员函数M具有类作用域,对M的访问方式如下:如果在类的任意成员4、函数中,没有声明与M同名的局部作用域标识符,那么在该函数内可以直接访问成员M。类外的函数、类x.M//通过对象x访问M(仅当M是public)X::M//通过类名访问M(仅当M是静态成员)通过表达式prt->M//通过指针(见第6章)10命名空间作用域命名空间:用于解决名字(标识符)的同名冲突命名空间的定义:namespacename{函数声明;变量声明;类声明;…………};命名空间作用域:在命名空间中,凡是不属于该命名空间下函数原型、函数体、类中声明的标识符,均属于命名空间作用域命名空间作用域的标识符,在本命名空间中任何地5、方均可使用不同命名空间中标识符的引用(法一)命名空间名::标识符名11法二:using命名空间名::标识符名作用:将指定空间中的指定标识符暴露在当前作用域中,可直接引用12#includeusingnamespacestd;namespacefirst{intx=5;inty=10;}namespacesecond{doublex=3.1416;doubley=2.7183;}intmain(){usingfirst::x;usingsecond::y;cout<6、l;cout<usingnamespacestd;namespacefirst{intx=5;inty=10;}namespacesecond{doublex=3.1416;doubley=2.7183;}intmain(){usingname7、spacefirst;//将first空间的标识符全部暴露,可直接引用cout<usi8、ngnamespacestd;inti;//在全局命名空间中的全局变量namespaceNs{intj;//在Ns命名空间中的全局变量}intmain(){Ns::j=6;//为全局变量j赋值intx=10;//局部变量cout<<"i="<
2、见作用域函数原型作用域局部作用域类作用域名字空间作用域(全局作用域)4函数原型的作用域函数原型中的参数,其作用域始于"(",结束于")"。例如,设有下列原型声明:doublevolume(doubleradius);doubleArea(doubleradius);radius的作用域仅在于此,不能用于程序正文其它地方,因而可有可无。局部作用域在函数中声明的变量(对象),具有局部作用域函数形参:从声明之处起,至函数体结束止,有效函数体内声明的对象(变量),从声明之处起,至声明所在的块结束的大括号止局部变量:具有局部作用域的变
3、量6局部作用域在块中声明的标识符,其作用域自声明处起,限于本块中,例如:voidfun(inta){intb(a);cin>>b;if(b>0){intc;......}……}c的作用域b的作用域a的作用域标准c++中:for(inti;i<10;i++){……}……vc6.0中:for(inti;i<10;i++){……}……8特别说明:VC6中,循环变量从定义之处起,在本函数内均有效i的作用域i的作用域类作用域类作用域:类定义内部和其所有成员函数的定义体。类的成员函数M具有类作用域,对M的访问方式如下:如果在类的任意成员
4、函数中,没有声明与M同名的局部作用域标识符,那么在该函数内可以直接访问成员M。类外的函数、类x.M//通过对象x访问M(仅当M是public)X::M//通过类名访问M(仅当M是静态成员)通过表达式prt->M//通过指针(见第6章)10命名空间作用域命名空间:用于解决名字(标识符)的同名冲突命名空间的定义:namespacename{函数声明;变量声明;类声明;…………};命名空间作用域:在命名空间中,凡是不属于该命名空间下函数原型、函数体、类中声明的标识符,均属于命名空间作用域命名空间作用域的标识符,在本命名空间中任何地
5、方均可使用不同命名空间中标识符的引用(法一)命名空间名::标识符名11法二:using命名空间名::标识符名作用:将指定空间中的指定标识符暴露在当前作用域中,可直接引用12#includeusingnamespacestd;namespacefirst{intx=5;inty=10;}namespacesecond{doublex=3.1416;doubley=2.7183;}intmain(){usingfirst::x;usingsecond::y;cout<6、l;cout<usingnamespacestd;namespacefirst{intx=5;inty=10;}namespacesecond{doublex=3.1416;doubley=2.7183;}intmain(){usingname7、spacefirst;//将first空间的标识符全部暴露,可直接引用cout<usi8、ngnamespacestd;inti;//在全局命名空间中的全局变量namespaceNs{intj;//在Ns命名空间中的全局变量}intmain(){Ns::j=6;//为全局变量j赋值intx=10;//局部变量cout<<"i="<
6、l;cout<usingnamespacestd;namespacefirst{intx=5;inty=10;}namespacesecond{doublex=3.1416;doubley=2.7183;}intmain(){usingname
7、spacefirst;//将first空间的标识符全部暴露,可直接引用cout<usi
8、ngnamespacestd;inti;//在全局命名空间中的全局变量namespaceNs{intj;//在Ns命名空间中的全局变量}intmain(){Ns::j=6;//为全局变量j赋值intx=10;//局部变量cout<<"i="<
此文档下载收益归作者所有