ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:461.12KB ,
资源ID:6982986      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6982986.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++实验报告四运算符的重载模板与STL.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++实验报告四运算符的重载模板与STL.docx

1、C+实验报告四运算符的重载模板与STL课程实验报告课程名称C+班级 实验日期 姓名 学号 实验成绩实验名称C+:运算符的重载、模板与STL实验目的及要求运算符重载1、类中运算符重载2、友元函数重载3、特殊运算符的重载模板与STL1、函数模板与模板函数2、类模板与模板类的应用3、STL容器与迭代器实验环境Dev-C+实验内容运算符重载1、类中运算符重载2、友元函数重载3、特殊运算符的重载模板与STL1、函数模板与模板函数2、类模板与模板类的应用3、STL容器与迭代器算法描述及实验步骤运算符重载1、类中运算符重载(以负号运算符重载为例)文件1:Coordinate.h#ifndef COORDIN

2、ATE_H#define COORDINATE_H#includeusing namespace std;class Coordinatepublic: Coordinate(int x,int y); Coordinate& operator-(); int getX(); int getY();private: int m_iX; int m_iY; #endif文件2:Coordinate.cpp#include Coordinate.hCoordinate:Coordinate(int x,int y) m_iX=x; m_iY=y;int Coordinate:getX() retu

3、rn m_iX;int Coordinate:getY() return m_iY;Coordinate& Coordinate:operator-() m_iX=-m_iX; this-m_iY=-this-m_iY; return *this;/返回值为引用,所以要加this的指针 文件3:Demo.cpp#include Coordinate.h#include using namespace std;/*运算符重载一元运算符重载 要求:定义Coordinate坐标类 成员函数:构造函数、getX、getY 数据成员:m_iX、m_iY */int main() Coordinate c

4、oor1(1,3); coutcoor1.getX(),coor1.getY()endl; -coor1; /coor1.operator-(); coutcoor1.getX(),coor1.getY()endl; system(pause); return 0;2、友元函数重载(以负号运算符友元函数重载为例)File1:Coordinate.h#ifndef COORDINATE_H#define COORDINATE_H#includeusing namespace std;class Coordinate friend Coordinate &operator-(Coordinate

5、&c); /写&c是为了其传递的效率 public: Coordinate(int x,int y); int getX(); int getY();private: int m_iX; int m_iY; #endifFile2:Coordinate.cpp#include Coordinate.hCoordinate:Coordinate(int x,int y) m_iX=x; m_iY=y;int Coordinate:getX() return m_iX;int Coordinate:getY() return m_iY;Coordinate &operator-(Coordinat

6、e &c) c.m_iX=-c.m_iX; c.m_iY=-c.m_iY; return c;/返回值为Coordinate &File3:Demo.cpp#include Coordinate.h#include using namespace std;/*运算符重载一元运算符重载 要求:定义Coordinate坐标类 成员函数:构造函数、getX、getY 数据成员:m_iX、m_iY 1、负号运算符重载(成员函数、友元函数) */int main() Coordinate coor1(1,3); coutcoor1.getX(),coor1.getY()endl; -coor1; cou

7、tcoor1.getX(),coor1.getY()endl; system(pause); return 0;3、特殊运算符的重载(+运算符重载(前置+、后置+)File1:Coordinate.h#ifndef COORDINATE_H#define COORDINATE_H#includeusing namespace std;class Coordinate friend Coordinate &operator-(Coordinate &c); /写&c是为了其传递的效率 public: Coordinate(int x,int y); Coordinate &operator+()

8、; int getX(); int getY();private: int m_iX; int m_iY; #endifFile2:Coordinate.cpp#include Coordinate.hCoordinate:Coordinate(int x,int y) m_iX=x; m_iY=y;int Coordinate:getX() return m_iX;int Coordinate:getY() return m_iY;Coordinate &Coordinate:operator+() m_iX+;/+m_iX; m_iY+;/+m_iY; return *this;File3

9、:Demo.cpp#include using namespace std;int main() Coordinate coor1(1,3); coutcoor1.getX(),coor1.getY()endl; +coor1; coutcoor1.getX(),coor1.getY()endl; /*-coor1; coutcoor1.getX(),coor1.getY()endl;*/ system(pause); return 0;4、特殊运算符的重载(+运算符重载(后置+)文件1:Coordinate.h#ifndef COORDINATE_H#define COORDINATE_H#

10、includeusing namespace std;class Coordinate friend Coordinate &operator-(Coordinate &c);public: Coordinate(int x,int y); Coordinate &operator+(); Coordinate operator+(int); /+放在后面特点:当前表达式使其+之前的值 /下一行代码再去访问时才是+之后此对象的值 int getX(); int getY();private: int m_iX; int m_iY; #endif文件2:Coordinate.cpp#includ

11、e Coordinate.hCoordinate:Coordinate(int x,int y) m_iX=x; m_iY=y;int Coordinate:getX() return m_iX;int Coordinate:getY() return m_iY;Coordinate &Coordinate:operator+() m_iX+;/+m_iX; m_iY+;/+m_iY; return *this;Coordinate Coordinate:operator+(int) Coordinate old(*this);/拷贝构造函数 this-m_iX+; this-m_iY+; r

12、eturn old; 文件3:Demo.cpp#include Coordinate.h#include using namespace std;/*运算符重载一元运算符重载 要求:定义Coordinate坐标类 成员函数:构造函数、getX、getY 数据成员:m_iX、m_iY+运算符重载(后置+) */int main() Coordinate coor1(1,3); coutcoor1.getX(),coor1.getY()endl; cout(coor1+).getX(),;/(coor1+).getX()是+之前的值 cout(coor1+).getY()endl;/(coor1+

13、).getY()是+之后的值 /*-coor1; coutcoor1.getX(),coor1.getY()endl;*/ system(pause); return 0;定义Coordinate类数据成员:m_iX, m_iY成员函数:构造函数重载“-”运算符,重载“+”运算符=#include using namespace std;/* * 定义Coordinate类 * 数据成员:m_iX,m_iY * 成员函数:构造函数 * 重载-运算符,重载+运算符 */class Coordinatepublic: Coordinate(int x, int y) m_iX = x; m_iY

14、= y; / 前置-运算符重载 Coordinate &operator-() m_iX-; m_iY-; return *this; / 后置-运算符重载 Coordinate operator-(int) Coordinate old(*this); this-m_iX-; m_iY-; return old; / +号运算符重载 Coordinate operator+(const Coordinate &coor) Coordinate temp(0,0); temp.m_iX=this-m_iX+coor.m_iX; temp.m_iY=this-m_iY+coor.m_iY; re

15、turn temp; public: int m_iX; int m_iY;int main(void) Coordinate coor1(1, 3); Coordinate coor2(2, 4); Coordinate coor3(0, 0); coor1-; -coor2; coor3 = coor1 + coor2; cout coor3.m_iX endl; cout coor3.m_iY endl; return 0;模板与STL1、函数模板与模板函数例1:#include #include using namespace std;/*函数模板: 要求定义函数模板display()

16、; */模板函数1 template /最好用typenamevoid display(T a)/T类型的参数 coutaendl;/模板函数2template/带两个参数的模板 void display(T t,S s)/用t、s当其变量 couttendl; coutsendl;/模板函数3template/定义一个类型参数和一个变量(变量实例化后就变成常量) void display(T a) for(int i=0;iKSize;i+) coutaendl; /以上为模板函数 int main() display(10);/模板函数1的函数模板1 display(10.75);/模板函

17、数1的函数模板2 display(5,8.3);/模板函数2 display(6);/模板函数3 system(pause); return 0;例二:#include using namespace std;/* * 定义模板函数swapNum * 实现功能:交换两个数的位置 */template void swapNum(T &a,T &b) T temp = a; a = b; b = temp;int main(void) int x = 10; int y = 20; / 调用模板函数 swapNum(x,y); cout x = x endl; cout y = y endl; r

18、eturn 0;2、类模板与模板类的应用文件1:MyArray.h#ifndef MYARRAY_H#define MYARRAY_H#include using namespace std;template class MyArraypublic: MyArray(); MyArray() delete m_pArr; m_pArr=NULL; void display();private: T *m_pArr;/若要定义类的模板,必须将类的声明及定义写在同一个文件中 template /*template+模板参数列表 MyArray:MyArray()/类名后记得写上参数名字 m_pAr

19、r=new TKSize; for(int i=0;iKSize;i+) m_pArri=KVal; /构造函数中我们将其定义为数组,并给元素进行了赋值操作 template /类外定义必加 void MyArray:display() for(int i=0;iKSize;i+) coutm_pArriendl; #endif文件2:MyArray.cpp#include MyArray.h文件3:Demo.cpp#include #include #include MyArray.husing namespace std; int main()/将模板类实例化成类模板: MyArray a

20、rr; /列表中参数顺序不能变:T,KSize,KVal /上述模板类被实例化成类模板后,定义了一个对象arr arr.display(); system(pause); return 0;3、STL容器与迭代器#include #include #include #include using namespace std;int main(void) / 使用vector存储数字:3、4、8、4 vector vec; vec.push_back(3); vec.push_back(6); vec.push_back(4); vec.push_back(8); /循环打印数字 vector:i

21、terator itor; for(itor =vec.begin();itor!=vec.end();itor+) cout*itorendl; / 使用map来存储字符串键值对 map m; pair p1(S,SHANGHAI); pair p2(B,BEIJING); pair p3(G,GUANGZHOU); m.insert(p1); m.insert(p2); m.insert(p3); map:iterator itor1; / 打印map中数据 for(itor1=m.begin();itor!=m.end();itor+) coutfirstendl; coutsecond

22、endl; return 0;调试过程及实验结果运算符重载1、类中运算符重载(以负号运算符成员函数重载为例)2、友元函数重载(以负号运算符友元函数重载为例)3、特殊运算符的重载(+运算符重载(前置+)4、特殊运算符的重载(+运算符重载(后置+)模板与STL1、 函数模板与模板函数 (例一) (例二)2、 类模板与模板类的应用:总结运算符的重载:(以下代码仅为说明总结知识点,并不完整,具体编程示例见面两版块)概念:给原有的运算符赋予新的功能;(eg:+是用于两个数字相加,我们会用+做两个字符串的拼接:+的重载)例1:int main() string str1(jamed); string st

23、r2(yuan); string str3=str1+str2;/用+连多个字符串,使其拼接为一个串 coutstr3endl;/打印时也可以直接打印这个串 return 0;本质:函数重载关键字:operator一元运算符重载例子: -(负号)的重载 +符号的重载(一元:此符号只与一个操作数进行运算,+为二元运算符)-(负号)的重载:友元函数重载、成员函数重载例2:(-(负号)成员函数的重载)class Coordinate /定义public: Coordinate(int x,int y); Coordinate& operator-(); private: int m_iX; int

24、m_iY;Coordinate& Coordinate:operator-() /实现 m_iX=-m_ix; m_iY=-m_iY; return *this;int main() /使用 Coordinate coor1(3,5);/先定义Coordinate对象 -coor1; /coor1.operator-();/在对象前加-,此对象中所有值均取反 return 0;/语法:类名&+operator+运算符+();例3:(-(负号)友元函数的重载)class Coordinate friend Coordinate& operator-(Coordinate &coor);publi

25、c: Coordinate(inr x,int y);private: int m_iX; int m_iY;Coordinate& operator-(Coordinate &coor) coor.m_iX=-coor.m_iX; coor.m_iY=-coor.m_iY; return *this;int main() Coordinate coor1(3,5); -coor1; /operator-(coor1); return 0;+符号的重载:前置+符号重载、后置+符号重载例4:+运算符的重载前置class Coordinatepublic: Coordinate(inr x,int y); Coordinate& operator+(); /前置+ private: int m_iX; int m_iY;Coordinate& Coordinate:operator+() m_iX+; m_iY+; return *this;int main() Coordinate coor1(3,5); +coor1; /coor1.operator+(); return 0;例5:+运算符的重载后置cla

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1