运算符重载实验8
- 格式:doc
- 大小:46.00 KB
- 文档页数:7
《面向对象程序设计》实验七运算符重载(电信系教师陈小常)
一、实验目的
1、掌握用成员函数重载运算符的方法
2、掌握用友元函数重载运算符的方法
二、实验内容
1.重载自增运算符
修改下面程序中的错误,添加成员函数的定义重载自增运算符,并调试输出运行结果。#include
using namespace std;
class counter
{
public;
Counter() {v=0;}
Counter opretor ++()
Counter opretor ++(int)
void print() {cout< private: unsingned v; }; int main() { Counter c; c.print(); (c++).print(); c.print(); ++c; c.print(); } //修改下面程序中的错误,添加成员函数的定义重载自增运算符,并调试输出运行结果。#include using namespace std; class counter { public: counter() {v=0;} counter operator ++()//前缀 { ++v; return *this; } counter operator ++(int)//后缀 { counter te(*this); v++; return te; } void print() {cout< private: unsigned v; }; int main() { counter c; c.print(); (c++).print(); c.print(); ++c; c.print(); return 0; } 2.、重载加、赋值运算符 已知Mydatatype类的定义如下,添加成员函数的定义重载加或者赋值运算符,并调试输出运行结果: # include class mydatatype { protected: int mndata; public: mydatatype(); mydatatype & operator=(int); mydatatype & operator=(mydatatype & ); mydatatype & operator+(mydatatype & ); operator int() { return mndata; } }; 。 。 。 int main() { mydatatype obj1,obj2,obj3; obj1=10; obj2=obj1; obj3=obj1+obj2; int nvalue=(int)obj3; cout<<"nvalue="< return 0; } //已知Mydatatype类的定义如下,添加成员函数的定义重载加或者赋值运算符,并调试输出运行结果: # include class mydatatype { protected: int mndata; public: mydatatype(); mydatatype & operator=(int); mydatatype & operator=(mydatatype & ); mydatatype& operator+(mydatatype & ); operator int() { return mndata; } void print() { cout< } }; mydatatype::mydatatype() { mndata=0; } mydatatype& mydatatype::operator=(int a) { mndata=a; return *this; } mydatatype& mydatatype::operator=(mydatatype & p) { mndata=p.mndata; return *this; } mydatatype& mydatatype::operator+(mydatatype & m) { mndata=mndata+m.mndata; return *this; } int main() { mydatatype obj1,obj2,obj3; obj1=10; //obj1.print(); obj2=obj1; //obj2.print(); obj3=obj1+obj2; int nvalue=(int)obj3; cout<<"nvalue="< return 0; } 3、建立类StrType,允许下面的操作符类型: (1) 使用+操作符的字符串连接; (2) 使用=操作符的字符串赋值; (3) 使用<、>==操作符的字符串比较。 可以自由使用定长字符串。 修改下面程序中的错误,添加成员函数定义重载+、=、<、>、==运算符,并调试输出运行结果。 #include < iostream.h> #include < string.h> class StrType { public: StrType(){ *s='\0';) StrType(char * p){ strcpy(s,p);} char * Get(){return s;} StrType oprator + (StrType& s2); StrType& oprator = (strType& s2); int operator < (StrType& s2); int operator > (StrType& s2); int operator == (StrType& s2); private: char s[80]; } 。 。