数据的共享和保护学习教案.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据的共享和保护学习教案.pptx》由会员分享,可在线阅读,更多相关《数据的共享和保护学习教案.pptx(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据数据(shj)的共享和保护的共享和保护第一页,共59页。2 2函数原型中的参数,其作用函数原型中的参数,其作用域始于域始于(,结束于,结束于)。例如例如(lr),设有下列原型,设有下列原型声明:声明:double Area(double radius);radius 的作用域仅在于此,不能用于程序正文其它(qt)地方,因而可有可无。第1页/共59页第二页,共59页。3 3在函数体中声明的标识符,其作用域自声明处起,在函数体中声明的标识符,其作用域自声明处起,在函数体中声明的标识符,其作用域自声明处起,在函数体中声明的标识符,其作用域自声明处起,一直到声明所在一直到声明所在一直到声明所在一直
2、到声明所在(su(su zi)zi)的块结束的大括号为止。的块结束的大括号为止。的块结束的大括号为止。的块结束的大括号为止。例如:例如:例如:例如:void fun(int a)void fun(int a)int b=a;int b=a;cinb;cinb;if(b0)if(b0)int c;int c;.c的作用域b的作用域a的作用域第2页/共59页第三页,共59页。4 4类作用域作用于特定的成员名。类作用域作用于特定的成员名。类作用域作用于特定的成员名。类作用域作用于特定的成员名。类类类类X X的成员的成员的成员的成员mm具有具有具有具有(jy(jy u)u)类作用域,对类作用域,对类作
3、用域,对类作用域,对mm的的的的访问方式如下:访问方式如下:访问方式如下:访问方式如下:如果在如果在如果在如果在X X的成员函数中没有声明同名的局部作的成员函数中没有声明同名的局部作的成员函数中没有声明同名的局部作的成员函数中没有声明同名的局部作用域标识符,那么在该函数内可以访问成员用域标识符,那么在该函数内可以访问成员用域标识符,那么在该函数内可以访问成员用域标识符,那么在该函数内可以访问成员mm。通过表达式通过表达式通过表达式通过表达式x.mx.m或者或者或者或者X:mX:m访问。访问。访问。访问。通过表达式通过表达式通过表达式通过表达式prt-mprt-m。第3页/共59页第四页,共59
4、页。5 5命名空间的语法命名空间的语法(yf):namespace 命名空间名命名空间名命名空间内的各种声明命名空间内的各种声明第4页/共59页第五页,共59页。6 6一个命名空间确定一个命名空间确定一个命名空间确定一个命名空间确定(qudng)(qudng)了一个命名空间作了一个命名空间作了一个命名空间作了一个命名空间作用域,凡是在该命名空间之内声明的、不属于前用域,凡是在该命名空间之内声明的、不属于前用域,凡是在该命名空间之内声明的、不属于前用域,凡是在该命名空间之内声明的、不属于前面所述各个作用域的标识符,都属于该命名空间面所述各个作用域的标识符,都属于该命名空间面所述各个作用域的标识符
5、,都属于该命名空间面所述各个作用域的标识符,都属于该命名空间作用域。作用域。作用域。作用域。在命名空间内部可以直接使用当前命名空间中声明的标识符。如果需要使用其他命名空间的标识符,需要使用下面的语法:命名空间名:标识符名第5页/共59页第六页,共59页。7 7using using 语句:语句:语句:语句:using using 命名命名命名命名(mng mng)(mng mng)空间名空间名空间名空间名:标识符标识符标识符标识符using namespace using namespace 命名命名命名命名(mng mng)(mng mng)空间名空间名空间名空间名全局命名空间:是一个默认的
6、命名空间,在显示声明的命名空间之外声明的标识符都在一个全局命名空间中。匿名命名空间第6页/共59页第七页,共59页。8 8#include#include using namespace std;using namespace std;int i;/int i;/在全局命名在全局命名在全局命名在全局命名(mng mng)(mng mng)空间中空间中空间中空间中的全局变量的全局变量的全局变量的全局变量namespace Nsnamespace Ns int j;/int j;/在命名在命名在命名在命名(mng mng)(mng mng)空间空间空间空间NsNs中的全局变量中的全局变量中的全局变
7、量中的全局变量 第7页/共59页第八页,共59页。9 9int main()int main()i=5;/i=5;/为全局变量为全局变量为全局变量为全局变量i i赋值赋值赋值赋值Ns:j=6;/Ns:j=6;/为全局变量为全局变量为全局变量为全局变量j j赋值赋值赋值赋值 /一个块的开始一个块的开始一个块的开始一个块的开始(kish(kish)using namespace Ns;using namespace Ns;/在当前块中可以使用在当前块中可以使用在当前块中可以使用在当前块中可以使用NsNs命名空间中的标命名空间中的标命名空间中的标命名空间中的标识符识符识符识符int i;/int i
8、;/局部变量局部变量局部变量局部变量i=7;/i=7;/给局部变量赋值给局部变量赋值给局部变量赋值给局部变量赋值couti=iendl;couti=iendl;coutj=jendl;coutj=jendl;couti=iendl;/couti=iendl;/输出全局变量输出全局变量输出全局变量输出全局变量i ireturn 0;return 0;第8页/共59页第九页,共59页。1010可见性是从对标识符的引用的可见性是从对标识符的引用的角度来谈的概念角度来谈的概念(ginin)可见性表示从内层作用域向外可见性表示从内层作用域向外层作用域层作用域“看看”时能看见什么。时能看见什么。如果标识在
9、某处可见,则就可如果标识在某处可见,则就可以在该处引用此标识符。以在该处引用此标识符。局部作用域类作用域命名作用域第9页/共59页第十页,共59页。1111标识符应声明在先,引用在后。标识符应声明在先,引用在后。标识符应声明在先,引用在后。标识符应声明在先,引用在后。如果某个标识符在外层中声明,且在内层如果某个标识符在外层中声明,且在内层如果某个标识符在外层中声明,且在内层如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在中没有同一标识符的声明,则该标识符在中没有同一标识符的声明,则该标识符在中没有同一标识符的声明,则该标识符在内层可见。内层可见。内层可见。内层可见。对于
10、两个对于两个对于两个对于两个(lin)(lin)(lin)(lin)嵌套的作用域,如果嵌套的作用域,如果嵌套的作用域,如果嵌套的作用域,如果在内层作用域内声明了与外层作用域中同在内层作用域内声明了与外层作用域中同在内层作用域内声明了与外层作用域中同在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内名的标识符,则外层作用域的标识符在内名的标识符,则外层作用域的标识符在内名的标识符,则外层作用域的标识符在内层不可见。层不可见。层不可见。层不可见。第10页/共59页第十一页,共59页。1212对象对象(duxing)从诞生到从诞生到结束的这段时间就是它的生结束的这段时间就是它的
11、生存期。在对象存期。在对象(duxing)生生存期内,对象存期内,对象(duxing)将将保持它的值,直到被更新为保持它的值,直到被更新为止。止。第11页/共59页第十二页,共59页。1313静态生存期与程序的运行期静态生存期与程序的运行期相同。相同。在命名空间作用域中声明的在命名空间作用域中声明的对象具有对象具有(jyu)静态生存期。静态生存期。在函数内部声明静态生存期在函数内部声明静态生存期对象,则要使用关键字对象,则要使用关键字static。第12页/共59页第十三页,共59页。1414除上述两种情况,其余的对除上述两种情况,其余的对象都具有动态生存期。象都具有动态生存期。局部作用域中声
12、明的,没有局部作用域中声明的,没有用用static修是的对象是动态修是的对象是动态生存期的对象(习惯生存期的对象(习惯(xgun)称局部生存期对象)称局部生存期对象)。局部生存期对象诞生于声明局部生存期对象诞生于声明点,结束于命名该标识符的点,结束于命名该标识符的作用域结束处。作用域结束处。第13页/共59页第十四页,共59页。1515#include#includeusing namespace std;using namespace std;int i=1;/i int i=1;/i 为全局变量,具有静态生存期。为全局变量,具有静态生存期。void other(void)void othe
13、r(void)static int a=2;static int a=2;static int b;static int b;/a,b /a,b为静态局部为静态局部(jb)(jb)变量,具有全局寿命,局部变量,具有全局寿命,局部(jb)(jb)可见。可见。/只第一次进入函数时被初始化。只第一次进入函数时被初始化。int c=10;/C int c=10;/C为局部为局部(jb)(jb)变量,具有动态生存期,变量,具有动态生存期,/每次进入函数时都初始化。每次进入函数时都初始化。a=a+2;i=i+32;c=c+5;a=a+2;i=i+32;c=c+5;cout-OTHER-n;cout-OTH
14、ER-n;cout i:i a:a b:b c:cendl;cout i:i a:a b:b c:cendl;b=a;b=a;第14页/共59页第十五页,共59页。1616int main()int main()static int a;/static int a;/静态局部变量,有全局静态局部变量,有全局(qunj)(qunj)寿命,局部寿命,局部可见。可见。int b=-10;/b,c int b=-10;/b,c为局部变量,具有动态生存期。为局部变量,具有动态生存期。int c=0;int c=0;cout-MAIN-n;cout-MAIN-n;cout i:i a:a b:b c:ce
15、ndl;cout i:i a:a b:b c:cendl;c=c+8;c=c+8;other();other();cout-MAIN-n;cout-MAIN-n;cout i:i a:a b:b c:cendl;cout i:i a:a b:b c:cendl;i=i+10;i=i+10;other();other();return 0;return 0;第15页/共59页第十六页,共59页。运行(ynxng)结果:18第16页/共59页第十七页,共59页。1818#include#includeusing namespace std;using namespace std;class Clo
16、ckclass Clock/时钟类声明时钟类声明public:public:/外部接口外部接口(ji k(ji k u)u)Clock();Clock();void setTime(int newH,int newM,int newS);void setTime(int newH,int newM,int newS);/三个形参均具有函数原型作用域三个形参均具有函数原型作用域void showTime();void showTime();Clock()Clock()private:private:/私有数据成员私有数据成员int hour,minute,second;int hour,minu
17、te,second;第17页/共59页第十八页,共59页。/时钟类成员函数时钟类成员函数(hnsh)(hnsh)实现实现Clock/Clock/时钟类成员函数时钟类成员函数(hnsh)(hnsh)实现实现Clock:Clock()Clock:Clock()/构造函数构造函数(hnsh)(hnsh)hour=0;hour=0;minute=0;minute=0;second=0;second=0;void Clock:setTime(int newH,int newM,int newS)void Clock:setTime(int newH,int newM,int newS)hour=newH
18、;hour=newH;minute=newM;minute=newM;second=newS;second=newS;void Clock:showTime()void Clock:showTime()couthour:minute:secondendl;couthour:minute:secondendl;1919第18页/共59页第十九页,共59页。Clock globClock;Clock globClock;/声明对象声明对象globClockglobClock,/具有静态生存期,命名空间作用域具有静态生存期,命名空间作用域int main()int main()/主函数主函数 cou
19、tFirst time output:endl;coutFirst time output:endl;/引用具有文件作用域的对象:引用具有文件作用域的对象:globClock.showTime();/globClock.showTime();/对象的成员对象的成员(chngyun)(chngyun)函数函数具有类作用域具有类作用域globClock.setTime(8,30,30);globClock.setTime(8,30,30);Clock myClock(globClock);Clock myClock(globClock);/定义具有局部作用域的对象定义具有局部作用域的对象myClo
20、ckmyClockcoutSecond time output:endl;coutSecond time output:endl;myClock.showTime();myClock.showTime();/引用具有局部作用域的对象引用具有局部作用域的对象return 0;return 0;21第19页/共59页第二十页,共59页。程序的运行(ynxng)结果为:First time output:0:0:0Second time output:8:30:3022第20页/共59页第二十一页,共59页。2222静态成员的提出时为了解决静态成员的提出时为了解决数据共享的问题。数据共享的问题。在类
21、中,静态成员分为在类中,静态成员分为(fn(fn wi)wi)静态数据成员和静态成静态数据成员和静态成员函数。员函数。第21页/共59页第二十二页,共59页。2323静态数据成员是类的所有对象共享的成员,静态数据成员是类的所有对象共享的成员,静态数据成员是类的所有对象共享的成员,静态数据成员是类的所有对象共享的成员,而不是某个对象的成员。静态数据成员的值而不是某个对象的成员。静态数据成员的值而不是某个对象的成员。静态数据成员的值而不是某个对象的成员。静态数据成员的值对所有对象来说都是一样的,但它的值是可对所有对象来说都是一样的,但它的值是可对所有对象来说都是一样的,但它的值是可对所有对象来说都
22、是一样的,但它的值是可以以以以(ky)(ky)(ky)(ky)更新的。更新的。更新的。更新的。考虑这样一个问题:考虑这样一个问题:如何记录一个类在程序运行时有多少如何记录一个类在程序运行时有多少个对象被创建?个对象被创建?为了记录这个类的对象的个数,需要有为了记录这个类的对象的个数,需要有一个变量来存储表示有多少对象被创建的计数值。一个变量来存储表示有多少对象被创建的计数值。第22页/共59页第二十三页,共59页。2424#include#include using namespace std;using namespace std;class Pointclass Point public:
23、public:Point(int x=0,int y=0):x(x),y(y)Point(int x=0,int y=0):x(x),y(y)count+;count+;Point(Point&p);Point(Point&p);Point()count-;Point()count-;int getX()return x;int getX()return x;int getY()return y;int getY()return y;void showCount()void showCount()cout Object count=countendl;cout Object count=cou
24、ntendl;private:private:int x,y;int x,y;static int count;static int count;第23页/共59页第二十四页,共59页。Point:Point(Point&p)Point:Point(Point&p)x=p.x;x=p.x;y=p.y;y=p.y;count+;count+;int Point:count=0;int Point:count=0;int main()int main()Point a(4,5);Point a(4,5);coutPoint A,a.getX(),a.getY();coutPoint A,a.get
25、X(),a.getY();a.showCount();a.showCount();Point b(a);Point b(a);coutPoint B,b.getX(),b.getY();coutPoint B,b.getX(),静态成员名6、如果是private或者protected静态数据成员,则不能在类外直接访问,只能通过公用的成员函数访问。第26页/共59页第二十七页,共59页。类中静态成员(chngyun)函数的定义格式:class 类名(li mn)static 类型 函数名(形参)函数体 ;第27页/共59页第二十八页,共59页。类的静态(jngti)成员函数的调用:静态成员函数属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 共享 保护 学习 教案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内