C03-面向对象语法1.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文档。上传文档
查看更多
C03-面向对象语法1

何时使用堆? 运行时才知道需要多少空间 需要开发人员自己设定对对象的生存周期 运行时刻才知道对象占多大空间,或者需要创建什么对象。 需要较大的连续空间,不适合放在栈中。 常成员函数 格式:函数声明和函数定义的函数头后面加 const,如: void get_time() const; 常成员函数内不能修改本对象中的数据成员 常成员函数内不可以调用另一个非const成员函数 对指针的约束有两种,一种是对指针本身的约束,一种是对指针所指向的内容的约束,它们的表示方法分别是: 类型名* const 指针变量; const 类型名* 指针变量; 前者表示指针本身不能被改变,但所指向的内容可以改变,我们称之为常指针;后者表示指针本身可以改变,但所指向的内容不可以被改变,我们称之为常量指针 对指针的约束 指向对象的常指针 指针变量声明为const时,指针的值不能被改变,但可以改变所指向的对象的状态,如: Time t1(12,0,0), t2(18,0,0); Time* const p=t1; p-m_hour=13; p=t2; //error 必须在定义常指针的时候赋初值 指向常对象的指针变量 如果一个变量声明为常变量,只能用指向常量的指针指向它 const Time t; Time* p=t; //error const Time* p=t; //correct 指向常量的指针也可以指向一个变量,但不能通过这个指针改变变量的值 Time t; const Time* p=t; 练习 Time t1; const Time* p=t1; //? p-m_hour=10; //? t1.m_hour=10; //? const Time t2; t2.m_hour=10; //? Time* const q=t2; //? q-m_hour=10 //? q=p; //? 对象的常引用 格式: const 类型 变量名; void fun(const Time t) { … } 常引用的用法和常量指针类似,常引用可以接受const变量作为初值;而非常引用只能接受非const变量作为初值 const型数据小结 形式 含义 Time const t; 常对象,成员数据不能改变,不能调用非const成员函数 void fun() const ; 常成员函数,函数体内不能改变成员数据,不能调用非const成员函数 Time* const p; 常指针,指针的值不能改变,所指向的内容可以改变 const Time* p; 常量指针,指针的值可以改变,但所指向的内容不可改变 const Time r=t; 常引用,成员数据不能改变,不能调用非const成员函数; Time r=t; 引用,成员可以改变,不能接受常对象作为初值 友元函数 一个类的友元函数内可以访问该类中的私有成员和保护成员 定义友元函数 在类体内声明该函数,并且在前面加上friend;注意:友元函数不是类的成员函数,它可以是全局函数或另一个类的成员函数 举例1 class Time { public: Time(int h,int m,int s); private: int m_hour; int m_minute; int m_sec; friend void display(Time t); }; void display(Time t) { cout t.m_hour‘:’t.m_minute‘:’ t.m_secendl; } 举例2 class Time { public: Time(int h,int m,int s); private: int m_hour; int m_minute; int m_sec; friend void Date::display(Time t); }; void Date::display(Time t) { cout t.m_hour‘:’t.m_minute‘:’ t.m_secendl; } 友元类 可以将一个类声明为另一个类的友元类,这样,类中任何一个成员函数中都可以访问另一个类的私有成员和保护成员,格式为:friend 友元类名; 友元类是单向的 友元类不能传递 举例 class Time { public: Time(int h,int m,int s); private: int m_hour; int m_mminute; int m_sec; friend class Date; }; 面向对象语法1 构造/析构函数 对象的动态建立和

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档