OOPC类成员学习教程.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)
《OOPC类成员学习教程.pptx》由会员分享,可在线阅读,更多相关《OOPC类成员学习教程.pptx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6 类成员(二)6.1 成员变量与成员函数6.2 this指针6.3 成员对象6.4 const(常量)6.5 const对象与const成员函数6.6 静态成员变量与静态成员函数第1页/共31页6.4 const量量(常量常量)从高质量程序设计的角度考察从高质量程序设计的角度考察C+C+中的中的constconst!第2页/共31页6.4.1 const的意义F最低权限原则:软件工程的基本原则之一软件工程的基本原则之一。const的意义:在可更改与不可更改之间画一在可更改与不可更改之间画一条明确的界线,提高程序的安全性和可控性。条明确的界线,提高程序的安全性和可控性。eg:const int
2、 i=100;i+;/编译错误 第3页/共31页6.4.2 C中的const(常量)F“一个不能被改变的普通变量”。F因此:-总是占用存储;总是占用存储;-名字是全局的。也就是说,默认情况下,名字是全局的。也就是说,默认情况下,constconst是外部连接的是外部连接的(容易引起容易引起“名字冲突名字冲突”)。const int bufsize;/无需初始化 const int bufsize=100;char bufbufsize;/error!Why?在编译时,编译器并不知道在编译时,编译器并不知道constconst的值,它只是的值,它只是一个一个“运行时常量运行时常量”。第4页/共3
3、1页6.4.3 C+的ConstF通常,通常,C+C+编译器不为编译器不为constconst创建存储空间,而是把它创建存储空间,而是把它保存在保存在“符号表符号表”里,即里,即“编译时常量编译时常量”。const int bufsize;/非法,未赋初值 const int bufsize=100;char strbufbufsize;/OK,Why?F默认情况下,默认情况下,C+C+中的中的constconst是内部连接的,也就是说,是内部连接的,也就是说,constconst仅在仅在constconst被定义过的文件里才是可见的。(因此,被定义过的文件里才是可见的。(因此,不用担心名字冲
4、突)不用担心名字冲突)F当定义一个当定义一个constconst时,必须赋一个值给它,除非用时,必须赋一个值给它,除非用externextern做出了清楚的说明。当用做出了清楚的说明。当用externextern说明了说明了constconst时,时,编译器会强制为编译器会强制为constconst分配空间,而不是保存在符号表分配空间,而不是保存在符号表中。中。extern const int bufsize;/未赋初值,但未赋初值,但externextern声明声明 了了bufsizebufsize在另在另一个文件一个文件 中定义及赋初值。中定义及赋初值。第5页/共31页6.4.3 C+的C
5、onst(续)Fconstconst用于集合,必须为其分配内存,用于集合,必须为其分配内存,(因为编译器因为编译器“不愿意不愿意”把集合保存到符号表中,太复杂把集合保存到符号表中,太复杂)。const int i=1,2,3,4;float fi3;/非法,编译期间无法知道存储空间非法,编译期间无法知道存储空间的值。的值。struct S int i,j;const S s=1,2,3,4 ;double ds1.j;/非法,理由同上非法,理由同上 int main()/:第6页/共31页6.4.4 C+中const的作用G值替代:C+C+的的constconst vs C C中的宏替换中的宏
6、替换#define BUFSIZE 100;/宏替换 char strBUFSIZE;vs const int bufsize=100;/C+的const char strbufsize;L在宏替换中,在宏替换中,BUFSIZEBUFSIZE没有类型信息,不能进行类型检查;没有类型信息,不能进行类型检查;L宏定义是全局的,容易名字冲突。宏定义是全局的,容易名字冲突。第7页/共31页6.4.4 C+中const的作用(续)A 安全性 如果如果想用想用运行期间产生的值初始化运行期间产生的值初始化一个变量,并一个变量,并且知道在该变量的生命期内其值不变,则可用且知道在该变量的生命期内其值不变,则可用
7、constconst限限定该变量,达到最大限度地保证改变量安全性的目的。定该变量,达到最大限度地保证改变量安全性的目的。int main()cout type a character&CR:;const char c=();/用运行期间产生的值初始化,之后不变 const char c2=c+a;cout c2;/:第8页/共31页6.4.5 const的应用:const指针1.指向const的指针(指针指向的内存地址的值不能改变指针指向的内存地址的值不能改变)const int*u;/u/u是一个指针,它指向是一个指针,它指向const int;const int;int const*v;/
8、v/v是一个指向恰好是是一个指向恰好是constconst的的intint的的 普通指针;普通指针;2.const指针(指针的值不能改变指针的值不能改变)const int d=1;int*const w=&d;/w/w是一个指针,这个指针是是一个指针,这个指针是 指向指向intint的的constconst指针指针 注意:注意:C+C+中,中,constconst指针必须赋初值指针必须赋初值第9页/共31页6.4.5 const的应用:const指针(续)3.const指针指向const对象 int d=1;const int*const x=&d;int const*const x2=&d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OOPC 成员 学习 教程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内