C++实验报告四运算符的重载模板与STL.docx
- 文档编号:6982986
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:30
- 大小:461.12KB
C++实验报告四运算符的重载模板与STL.docx
《C++实验报告四运算符的重载模板与STL.docx》由会员分享,可在线阅读,更多相关《C++实验报告四运算符的重载模板与STL.docx(30页珍藏版)》请在冰豆网上搜索。
C++实验报告四运算符的重载模板与STL
课程实验报告
课程名称
C++
班级
实验日期
姓名
学号
实验成绩
实验名称
C++:
运算符的重载、模板与STL
实
验
目
的
及
要
求
运算符重载
1、类中运算符重载
2、友元函数重载
3、特殊运算符的重载
模板与STL
1、函数模板与模板函数
2、类模板与模板类的应用
3、STL容器与迭代器
实
验
环
境
Dev-C++
实
验
内
容
运算符重载
1、类中运算符重载
2、友元函数重载
3、特殊运算符的重载
模板与STL
1、函数模板与模板函数
2、类模板与模板类的应用
3、STL容器与迭代器
算
法
描
述
及
实
验
步
骤
运算符重载
1、类中运算符重载(以负号运算符重载为例)
文件1:
Coordinate.h
#ifndefCOORDINATE_H
#defineCOORDINATE_H
#include
usingnamespacestd;
classCoordinate{
public:
Coordinate(intx,inty);
Coordinate&operator-();
intgetX();
intgetY();
private:
intm_iX;intm_iY;
};
#endif
文件2:
Coordinate.cpp
#include"Coordinate.h"
Coordinate:
:
Coordinate(intx,inty){
m_iX=x;m_iY=y;
}
intCoordinate:
:
getX(){
returnm_iX;
}
intCoordinate:
:
getY(){
returnm_iY;
}
Coordinate&Coordinate:
:
operator-(){
m_iX=-m_iX;
this->m_iY=-this->m_iY;
return*this;//返回值为引用,所以要加this的指针
}
文件3:
Demo.cpp
#include"Coordinate.h"
#include
usingnamespacestd;
/*运算符重载—一元运算符重载
要求:
定义Coordinate坐标类
成员函数:
构造函数、getX、getY
数据成员:
m_iX、m_iY
*/
intmain(){
Coordinatecoor1(1,3);
cout< -coor1;//coor1.operator-(); cout< system("pause"); return0; } 2、友元函数重载(以负号运算符友元函数重载为例) File1: Coordinate.h #ifndefCOORDINATE_H #defineCOORDINATE_H #include usingnamespacestd; classCoordinate{ friendCoordinate&operator-(Coordinate&c); //写&c是为了其传递的效率 public: Coordinate(intx,inty); intgetX(); intgetY(); private: intm_iX;intm_iY; }; #endif File2: Coordinate.cpp #include"Coordinate.h" Coordinate: : Coordinate(intx,inty){ m_iX=x;m_iY=y; } intCoordinate: : getX(){ returnm_iX; } intCoordinate: : getY(){ returnm_iY; } Coordinate&operator-(Coordinate&c){ c.m_iX=-c.m_iX; c.m_iY=-c.m_iY; returnc;//返回值为Coordinate& } File3: Demo.cpp #include"Coordinate.h" #include usingnamespacestd; /*运算符重载—一元运算符重载 要求: 定义Coordinate坐标类 成员函数: 构造函数、getX、getY 数据成员: m_iX、m_iY 1、负号运算符重载(成员函数、友元函数) */ intmain(){ Coordinatecoor1(1,3); cout< -coor1; cout< system("pause"); return0; } 3、特殊运算符的重载(++运算符重载(前置++、后置++)) File1: Coordinate.h #ifndefCOORDINATE_H #defineCOORDINATE_H #include usingnamespacestd; classCoordinate{ friendCoordinate&operator-(Coordinate&c); //写&c是为了其传递的效率 public: Coordinate(intx,inty); Coordinate&operator++(); intgetX(); intgetY(); private: intm_iX;intm_iY; }; #endif File2: Coordinate.cpp #include"Coordinate.h" Coordinate: : Coordinate(intx,inty){ m_iX=x;m_iY=y; } intCoordinate: : getX(){ returnm_iX; } intCoordinate: : getY(){ returnm_iY; } Coordinate&Coordinate: : operator++(){ m_iX++;//++m_iX; m_iY++;//++m_iY; return*this; } File3: Demo.cpp #include usingnamespacestd; intmain(){ Coordinatecoor1(1,3); cout< ++coor1; cout< /*-coor1; cout< system("pause"); return0; } 4、特殊运算符的重载(++运算符重载(后置++)) 文件1: Coordinate.h #ifndefCOORDINATE_H #defineCOORDINATE_H #include usingnamespacestd; classCoordinate{ friendCoordinate&operator-(Coordinate&c); public: Coordinate(intx,inty); Coordinate&operator++(); Coordinateoperator++(int); //++放在后面特点: 当前表达式使其++之前的值 //下一行代码再去访问时才是++之后此对象的值 intgetX(); intgetY(); private: intm_iX;intm_iY; }; #endif 文件2: Coordinate.cpp #include"Coordinate.h" Coordinate: : Coordinate(intx,inty){ m_iX=x;m_iY=y; } intCoordinate: : getX(){ returnm_iX; } intCoordinate: : getY(){ returnm_iY; } Coordinate&Coordinate: : operator++(){ m_iX++;//++m_iX; m_iY++;//++m_iY; return*this; } CoordinateCoordinate: : operator++(int){ Coordinateold(*this);//拷贝构造函数 this->m_iX++; this->m_iY++; returnold; } 文件3: Demo.cpp #include"Coordinate.h" #include usingnamespacestd; /*运算符重载—一元运算符重载 要求: 定义Coordinate坐标类 成员函数: 构造函数、getX、getY 数据成员: m_iX、m_iY ++运算符重载(后置++) */ intmain(){ Coordinatecoor1(1,3); cout< cout<<(coor1++).getX()<<",";//(coor1++).getX()是++之前的值 cout<<(coor1++).getY()< /*-coor1; cout< system("pause"); return0; } 定义Coordinate类 数据成员: m_iX,m_iY 成员函数: 构造函数 重载“--”运算符,重载“+”运算符 ==================================== #include usingnamespacestd; /** *定义Coordinate类 *数据成员: m_iX,m_iY *成员函数: 构造函数 *重载--运算符,重载+运算符 */ classCoordinate { public: Coordinate(intx,inty) { m_iX=x; m_iY=y; } //前置--运算符重载 Coordinate&operator--(){ m_iX--;m_iY--; return*this; } //后置--运算符重载 Coordinateoperator--(int){ Coordinateold(*this); this->m_iX--;m_iY--; returnold; } //+号运算符重载 Coordinateoperator+(constCoordinate&coor){ Coordinatetemp(0,0); temp.m_iX=this->m_iX+coor.m_iX; temp.m_iY=this->m_iY+coor.m_iY; returntemp; } public: intm_iX; intm_iY; }; intmain(void) { Coordinatecoor1(1,3); Coordinatecoor2(2,4); Coordinatecoor3(0,0); coor1--; --coor2; coor3=coor1+coor2; cout< cout< return0; } 模板与STL 1、函数模板与模板函数 例1: #include #include usingnamespacestd; /*函数模板: 要求定义函数模板display(); */ //模板函数1 template voiddisplay(Ta){//T类型的参数 cout< } //模板函数2 template voiddisplay(Tt,Ss){//用t、s当其变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 报告 运算 重载 模板 STL