- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章实验_类与对象_03
* * * 类和对象的关系 【this指针程序示例】 Database Information System Lab * #includeiostream.h class Myclass { int a; public: Myclass(){a=0;} void Myfunction(int); void print(); }; void Myclass::print() { coutMember a=aendl; } void Myclass::Myfunction(int a) { a += a;//局部变量a+a coutLocal a=aendl; this-a += a;//成员变量a+局部变量a coutMember a=this-aendl; a += this-a;//局部变量a+成员变量a coutLocal a=aendl; } void main() { Myclass MyObj; MyObj.Myfunction(10); MyObj.print(); } 将不同类型的程序放在不同文件中 类定义体 MyClass.h 类的成员函数定义、静态成员变量赋初值 MyClass.cpp #include ”MyClass.h” 主函数 Main.cpp 注意:在使用类的文件中,一定要嵌入包含该类定义的头文件,且将文件名包含在双引号中 Database Information System Lab * 将不同类型的程序放在不同文件中 可能会产生类重复定义的错误 class XXX redefined 由于多次include造成的 同一个源文件中嵌入多个头文件,两个或以上头文件嵌入了相同的头文件 处理文件包含错误的方法——预处理命令 类定义的文件MyClass.h采用如下写法 #ifndef ABC_H #define ABC_H //头文件的程序内容,即类MyClass的定义 #endif Database Information System Lab * IDE中的类视图 Database Information System Lab * 类视图选项卡 类名 类成员变量 类成员函数 IDE中的文档视图 Database Information System Lab * 文档视图选项卡 源文件 头文件 资源文件 友元 友元的含义 友元函数 不是类的成员函数 原型说明在类内 定义在类外(类的成员函数可在类内定义) 直接调用(类的成员函数需要类对象调用) 友元类 其成员函数全部为另一类的友元函数 不建议过多使用 Database Information System Lab * 运算符重载 以运算符和运算表达式的形式类对象的运算 友元函数方式 每个运算分量都是参数 类成员函数方式 调用成员函数的对象是一个运算分量 成员函数的参数是其它运算分量 以合法表达式的形式调用运算符重载函数,实现类对象的运算 亦可直接调用运算符重载函数 Database Information System Lab * 运算符重载 运算符重载函数 友元函数 直观 破坏了类的封装性 类的成员函数 不直观,第一个运算分量不明显 保持了类的封装性 Database Information System Lab * 运算符重载 使用方式 表达式形式 Set c = a + b; 函数调用形式 Set c = operator+(a,b);//友元函数 Set c = a.operator+(b);//成员函数 成员函数的定义中直接使用的成员变量,为调用该成员函数的对象所有,该对象亦是运算表达式的第一运算分量。 Database Information System Lab * 运算符重载 #includeiostream.h class point { int x,y; public: point(); point(int,int); void print(); friend point operator+(point,point); }; Database Information System Lab * 运算符重载 point::point() { x=0; y=0; } point::point(int x0,int y0):x(x0),y(y0) { } void point::print() { cout(x,y)endl; } Database Information System Lab * 运算符重载 point operator+(point a,point b){ point c; c.x = a.x + b.x; c.y = a.y + b.y
您可能关注的文档
- 第7章 数字信号频带传输3.ppt
- 第7章 控制结构分支与跳转.ppt
- 第7章 指针及引用.ppt
- 第7章 数字信号频带传输1.ppt
- 第7章 工厂供电系统二次回路和自动装置.ppt
- 第7章 吸声与室内声场-hans.ppt
- 第7章 普通螺纹互换性及其检测.ppt
- 第7章 振幅调制及解调.ppt
- 第7章 短路电流计算与分析.ppt
- 第7章 路由热备份.ppt
- 说话部分tpo33口语原文参.pdf
- 文本星期一下午korean paper 1 question booklet.pdf
- 英语作为二语言播客2010 esl podcast petESL愿书奖品.pdf
- ios app打包发布流程说明书.pdf
- from-birds to bears animals face danger around the world从鸟到两头脸围绕世界.pdf
- 2025届重庆市沙坪坝区中考历史全真模拟试卷含解析.doc
- 2025届江苏省南通市通州区十总中学中考押题历史预测卷含解析.doc
- 江苏省兴化市顾庄区三校2025届中考历史最后冲刺卷含解析.doc
- 2025届浙江省富阳市中考五模历史试题含解析.doc
- 2025届山东省淄博市博山重点达标名校中考历史模试卷含解析.doc
文档评论(0)