《运算符重载.ppt》由会员分享,可在线阅读,更多相关《运算符重载.ppt(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、运算符重载运算符重载#include using namespace std;class MyStringchar*_ptr;int _size;public:MyString(int=10);MyString(char*str);MyString(const MyString&obj);MyString()delete_ptr;char&operator(int i);int size()const;MyString&operator=(const MyString&str);MyString&operator+(const MyString&str);bool operator=(cons
2、t MyString&str);bool operator (const MyString&str);bool operator=(const MyString&str);friend ostream&operator(istream&is,MyString&str);int main()MyString str1=Hello;MyString str2=world.;coutstr1+str2endl;cout(str10=0)str1;coutstr1endl;return 0;MyString:MyString(int n):_size(n)_ptr=new charn+1;memset
3、(_ptr,0,n+1);MyString:MyString(char*str)int n=strlen(str);_size=n;_ptr=new char_size+1;strcpy(_ptr,str);MyString:MyString(const MyString&obj)_size=obj._size;_ptr=new char_size+1;strcpy(_ptr,obj._ptr);int MyString:size()constreturn _size;MyString&MyString:operator+(const MyString&str)_size+=str._size
4、;char*tmp=new char_size+1;strcpy(tmp,_ptr);strcpy(tmp+strlen(_ptr),str._ptr);delete_ptr;_ptr=tmp;return*this;返回类型返回类型 类名类名:operator 运算符运算符(参数列表参数列表)char&MyString:operator(int i)if(i_size)throw 下标越界下标越界;return _ptri;返回类型返回类型 类名类名:operator 运算符运算符(参数列表参数列表)MyString&MyString:operator=(const MyString&str
5、)_size=str._size;delete_ptr;_ptr=new char_size+1;strcpy(_ptr,str._ptr);return*this;返回类型返回类型 类名类名:operator 运算符运算符(参数列表参数列表)bool MyString:operator=(const MyString&str)return strcmp(_ptr,str._ptr)=0;bool MyString:operator (const MyString&str)return strcmp(_ptr,str._ptr)(const MyString&str)return strcmp
6、(_ptr,str._ptr)0;bool MyString:operator=(const MyString&str)return strcmp(_ptr,str._ptr)=(const MyString&str)return strcmp(_ptr,str._ptr)=0;ostream&operator(ostream&os,const MyString&str)os(istream&is,MyString&str)char*p=new char512;isp;deletestr._ptr;str._ptr=new charstrlen(p)+1;strcpy(str._ptr,p);
7、deletep;return is;返回类型返回类型 operator 运算符运算符(参数列表参数列表)+与-class Aint a;public:A(int n=0):a(n)A operator+()a+;return*this;A operator+(int)A tmp=*this;a+;return tmp;void show()coutaendl;int main()A o1(9);o1.show();A o2=+o1;A o3=o1+;o1.show();o2.show();o3.show();return 0;9111010-操作符的重操作符的重载类载类似似类型转换class Aint a;public:A(int n=0):a(n)operator int()return a;int main()A o1(9);int n=o1;coutnendl;return 0;如何将一个整型如何将一个整型转转化化为为A类类型?型?
限制150内