欢迎来到天天文库
浏览记录
ID:58681378
大小:197.00 KB
页数:70页
时间:2020-10-05
《第五章c++的结构ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章C++程序的结构面向对象程序设计1本章主要内容作用域与可见性对象的生存期数据与函数静态成员共享数据的保护友元编译预处理命令多文件结构和工程25.1标识符的作用域与可见性作用域是标识符的有效范围可见性是讨论标识符是否可以被引用3函数原形的作用域函数原型中的参数,其作用域始于"(",结束于")"。例如,设有下列原型声明:doubleArea(doubleradius);radius的作用域仅在于此,不能用于程序正文其它地方,因而可有可无。作用域与可见性4块作用域在块中声明的标识符,其作用域自声明处起,限于块中,例如:voidfun(inta){intb(a);ci
2、n>>b;if(b>0){intc;......}}c的作用域b的作用域作用域与可见性5类作用域P126说明和纠正类X的成员M(分访问数据成员和成员函数两部分)具有类作用域,对M的访问方式:对数据成员的访问:1、如果类成员函数中没有声明同名的局部作用域标识符,那么在该成员函数内可以直接访问数据成员。2、在别处,通过x的对象.M或者X::M访问,如果是类指针,通过表达式x的对象指针->M访问。对成员函数的访问:x的对象.M或者X::M访问,如果是类指针,通过表达式x的对象指针->M。文件作用域(全局变量)不在前述各个作用域中出现的声明,具有文件作用域,这样声明的标识符
3、的作用域开始于声明点,结束于文件尾。作用域与可见性7inti;//全局变量,文件作用域voidmain(){i=5;//文件作用域的i赋初值{//子块1inti;//局部变量,块作用域i=7;cout<<"i="<
4、在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见。作用域与可见性10对象的生存期对象从产生到结束的这段时间就是它的生存期。在对象生存期内,对象将保持它的值,直到被更新为止。11静态生存期这种生存期与程序的运行期相同。在文件作用域中声明的对象具有这种生存期。在函数内部声明静态生存期对象,要冠以关键字static,只第一次进入函数时被初始化。对象的生存期12#includeusingnamespacestd;inti=5;//文件作用域intmain(){cout<<"i="<5、静态生存期对象的生存期13动态生存期块作用域中声明的,没有用static修是的对象是动态生存期的对象(习惯称局部生存期对象)。开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。对象的生存期14#includeusingnamespacestd;voidfun();voidmain(){fun();fun();}voidfun(){staticinta=1;//静态生存期静态生存期inti=5;//动态生存期a++;i++;cout<<"i="<6、动态生存期a是静态生存期165.3类的静态成员每当实例化一个类的对象时,系统为该对象分配一块内存用来存放该类的所有成员,也就是说在每一个对象中都存放有其所属类中所有成员的拷贝。但是,在有些时候,希望程序中同类对象共享某个数据。17解决办法1、将所要共享的数据说明为全局变量缺点:破坏了数据的封装性。2、将所有共享的数据说明成类的静态数据成员。18静态数据成员声明成静态数据成员,C++编译器将静态数据成员存放在静态存储区,该数据为类的所有对象共享。195.3类的静态成员静态数据成员静态成员函数20静态数据成员静态数据成员1、用关键字static在类体里声明;2、必须在类7、外初始化;3、用类名和作用域操作符,即“类名::”来引用。静态成员21例5-4具有静态数据成员的Point类#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}Point(Point&p);intGetX(){returnX;}intGetY(){returnY;}voidGetC(){cout<<"Objectid="<
5、静态生存期对象的生存期13动态生存期块作用域中声明的,没有用static修是的对象是动态生存期的对象(习惯称局部生存期对象)。开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。对象的生存期14#includeusingnamespacestd;voidfun();voidmain(){fun();fun();}voidfun(){staticinta=1;//静态生存期静态生存期inti=5;//动态生存期a++;i++;cout<<"i="<6、动态生存期a是静态生存期165.3类的静态成员每当实例化一个类的对象时,系统为该对象分配一块内存用来存放该类的所有成员,也就是说在每一个对象中都存放有其所属类中所有成员的拷贝。但是,在有些时候,希望程序中同类对象共享某个数据。17解决办法1、将所要共享的数据说明为全局变量缺点:破坏了数据的封装性。2、将所有共享的数据说明成类的静态数据成员。18静态数据成员声明成静态数据成员,C++编译器将静态数据成员存放在静态存储区,该数据为类的所有对象共享。195.3类的静态成员静态数据成员静态成员函数20静态数据成员静态数据成员1、用关键字static在类体里声明;2、必须在类7、外初始化;3、用类名和作用域操作符,即“类名::”来引用。静态成员21例5-4具有静态数据成员的Point类#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}Point(Point&p);intGetX(){returnX;}intGetY(){returnY;}voidGetC(){cout<<"Objectid="<
6、动态生存期a是静态生存期165.3类的静态成员每当实例化一个类的对象时,系统为该对象分配一块内存用来存放该类的所有成员,也就是说在每一个对象中都存放有其所属类中所有成员的拷贝。但是,在有些时候,希望程序中同类对象共享某个数据。17解决办法1、将所要共享的数据说明为全局变量缺点:破坏了数据的封装性。2、将所有共享的数据说明成类的静态数据成员。18静态数据成员声明成静态数据成员,C++编译器将静态数据成员存放在静态存储区,该数据为类的所有对象共享。195.3类的静态成员静态数据成员静态成员函数20静态数据成员静态数据成员1、用关键字static在类体里声明;2、必须在类
7、外初始化;3、用类名和作用域操作符,即“类名::”来引用。静态成员21例5-4具有静态数据成员的Point类#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}Point(Point&p);intGetX(){returnX;}intGetY(){returnY;}voidGetC(){cout<<"Objectid="<
此文档下载收益归作者所有