C++常数据(函数)成员精讲.doc_第1页
C++常数据(函数)成员精讲.doc_第2页
C++常数据(函数)成员精讲.doc_第3页
C++常数据(函数)成员精讲.doc_第4页
C++常数据(函数)成员精讲.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+常数据成员精讲const关键字更多内容:/内容提要:用const修饰的定义对象称为常对象;用const修饰的声明成员函数称为常成员函数;用const修饰的声明数据成员称为常数据成员。变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。用const修饰的声明数据成员称为常数据成员。有两种声明形式:const int cctwl;int const cctwl;int cctwl const; /这样是错误的只能有以上两种声明形式。不能省略数据类型,可以添加 public private等访问控制符。说明:1.任何函数都不能对常数据成员赋值。2.构造函数对常数据成员进行初始化时也只能通过初始化列表进行。3.常数据成员在初始化时必须赋值或称其必须初始化.4.如果类有多个默认构造函数必须都初始化常数据成员。通过下面例子来理解常数据成员以上4点。A、请指出下面程序的错误class Aprivate:int w,h; const int cctwl=5; /错误一public:;void main() A a ; /错误二 cout sss; system(pause);错误一:不能对常数据成员在类中初始化、要通过类的构造函数,只有静态常量才能这样初始化。错误二:没有合适的默认构造函数可用。因为有常量cctwl没有初始化必须初始化所有常数据成员。更正后结果如下:class Aprivate: int w,h; const int cctwl; public: const int cctwlcom;/常对象可以是共有私有等访问权限 A():cctwl(5),cctwlcom(8);/通过构造函数初始化列表初始化常成员数据。;B、多个构造函数下的常数据成员请指出下面程序的错误:class Aprivate: int w,h; const int cctwl;public: const int cct; A():cctwl(5),cct(6); A(int x,int y) /错误一 w=x,h=y; ;void main() A a ; A b(3,8); cout sss; system(pause);错误一:每个构造函数都要初始化常数据成员应改为A(int x,int y):cctwl(7),cct(8) w=x,h=y;C+常成员函数 - const 关键字一、常成员函数详解声明:函数名(参数表)const;说明:(1)const是函数类型的一部分,在实现部分也要带该关键字。(2)const关键字可以用于对重载函数的区分。(3)常成员函数不能更新任何数据成员,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数和常数据成员。A、通过例子来理解const是函数类型的一部分,在实现部分也要带该关键字。class Aprivate: int w,h;public: int getValue() const; int getValue(); A(int x,int y) w=x,h=y; A();int A:getValue() const /实现部分也带该关键字 return w*h; /?void main() A const a(3,4); A c(2,6);couta.getValue()c.getValue()cctwlTest; system(pause);B、通过例子来理解const关键字的重载class Aprivate: int w,h;public:int getValue() const return w*h; int getValue() return w+h; A(int x,int y) w=x,h=y; A();void main() A const a(3,4); A c(2,6); couta.getValue()c.getValue()cctwlTest; /输出12和8 system(pause);C、通过例子来理解常成员函数不能更新任何数据成员class Aprivate: int w,h;public: int getValue() const; int getValue(); A(int x,int y) w=x,h=y; A();int A:getValue() const w=10,h=10;/错误,因为常成员函数不能更新任何数据成员 return w*h;int A:getValue() w=10,h=10;/可以更新数据成员 return w+h;void main() A const a(3,4); A c(2,6); couta.getValue()endlc.getValue()cctwlTest; system(pause);D、通过例子来理解1、常成员函数可以被其他成员函数调用。2、但是不能调用其他非常成员函数。3、可以调用其他常成员函数。class Aprivate: int w,h;public: int getValue() const return w*h + getValue2();/错误的不能调用其他非常成员函数。 int getValue2() return w+h+getValue();/正确可以调用常成员函数 A(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论