6 常成员和对象指针.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6 常成员和对象指针

面向对象程序设计(C++) 第6章 常成员和对象指针 6.1 常数据成员 在类的成员定义中,使用修饰符const说明的数据成员称为常数据成员。常数据成员必须初始化,并且不能被修改。常数据成员是通过构造函数的成员初始化列表进行初始化的。 6.1 常数据成员 class A { public: A(int i); void Print(); const int r; private: const int a; static const int b; }; const int A::b=15; A::A(int i):a(i),r(a){} void A::Print() { couta“,”b“,”rendl; } #include iostream.h void main() { A a1(50),a2(30); a1.Print(); a2.Print(); } A::A(int i):a(i), r(a){} 构造函数A带有一个int型参数i,冒号后面是一个数据成员初始化列表,包含两个初始项,用逗号分隔。其中a(i)表示用i的值初始化常数据成员a, r(a)表示用a初始化常数据成员r。 50,15,50 30,15,30 6.2 常对象 数据成员值在整个生存期内不能被改变的对象为常对象,常对象必须进行初始化,而且不能被更新。声明的语法形式为: 类名 const 对象名 或 const 类名 对象名 class A { public: A (int i, int j) {x=i; y=j} void setValue(int i, int j) {x=i; y=j} private: int x, y; }; A const a(3,4); //OK A b; b.setValue(1,2); //OK A const b; b.setValue(1,2); //Error! 语法规定:不能通过常对象调用普通成员函数。 6.3 常成员函数 使用const关键字说明的成员函数: 类型说明符 函数名(参数表) const; 说明: const是函数类型的一个组成部分,因此在实现部分也要有const关键字。 常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。这样可以保证在常成员函数中不会修改数据成员的值。 如果将一个对象说明为常对象,则通过该常对象只能调用其常成员函数,而不能调用其它成员函数。这是C++从语法机制上对常对象的保护,也是常对象唯一的对外接口方式。 const关键字可以用于对重载函数的区分。 6.4 对象指针 1. 指向对象的指针 同基本数据类型的变量一样,每个对象在声明之后会在内存中分配一定的空间。既可以通过对象名,也可以通过对象的地址来访问对象。对象所占的内存空间只用于存放数据成员,函数成员不在每个对象中都存储副本。 对象指针是用于存放对象地址的变量,遵循一般指针变量的各种规则。声明对象指针的一般形式为: 类名 *对象指针名 例如:Point p1,*p_Point; p_Point=p1; 使用对象指针可以访问对象的公有成员: 对象指针名?成员名 对象指针在使用前,应该先进行初始化,让它指向一个已经声明过的对象,然后再使用。 6.4 对象指针 2.指向对象的常指针和指向常对象的指针 (1)指向对象的常指针 类名* const 指针名 该指针的地址是常量不能改变,但该指针所指向的对象可以改变。 Date d1,d2; Date * const pd=d1; pd=d2; //Error 指向对象的常指针是将一个指针固定地同一个对象相关联,即始终指向一个对象,不能改变指针所指对象。 6.4 对象指针 (2).指向常对象的指针 指向常对象的指针是指这个指针所指向的对象是常对象。声明格式如下: const 类名*指针名=初值; const Date d1(2005,7,1); const Date *pd=d1; 对指向常对象的指针赋值可以是常对象的地址,也可以是非常对象的地址。试图通过指向常对象的指针来改变所指对象的数据成员值是不允许的。 6.4 对象指针 (2).指向常对象的指针 如果有一个常对象,指向它的指针一定要用指向常对象的指针,指向一般对象的指针是不可以的。 指向常对象的指针可以用一般对象地址进行赋值,但不能通过该指针改变对象值。 使用指向常对象指针引用的成员函数应该是常成员函数。 指向常对象的指针的地址值是可以改变的。 指向常对象的指针可以作为函数参数,这样能保证不会在被调用函

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档