文档详情

运算符重载string运算符.docx

发布:2017-05-22约5.02千字共6页下载文档
文本预览下载声明
运算符重载 #includeiostream #includeFunnyString.h using std::istream; using std::ostream; using std::string; using std::cout; using std::cin; using std::endl; int main() { FunnyString string1,string2; coutPlease input s1: ; cinstring1; coutPlease input s2: ; cinstring2; cout未进行s1-=s2运算时的s1 * s2 is string1*string2; cout\ns1 + s2 is string1+string2; cout\ns1 - s2 is string1-string2; cout\ns1+= s2 is (string1+=string2); cout\ns1 -= s2 is (string1-=string2);//老师,题目中写道:s1+= s2 is abcabf s1 -= s2 is c s1 * s2 is adbacbdf cout\n进行s1-=s2运算后的s1 * s2 is string1*string2\n; //但是-=后s1的只有一个c了,乘以s2后是不是应为cdabf。 return 0; } #include iostream using std::istream; using std::ostream; using std::string; using std::cout; using std::cin; using std::endl; #includeFunnyString.h void FunnyString::setFunnyString( const char * a) { sPtr=new char [length+1]; if ( a!=0) strcpy(sPtr,a); else sPtr[0]=\0; } FunnyString::FunnyString( const char *first) : length((first!=0)?strlen(first):0) { setFunnyString(first); } FunnyString::FunnyString( const FunnyString a) { length=a.length; sPtr=new char[length+1]; for(int i=0;ilength;i++) sPtr[i]=a.sPtr[i]; } int FunnyString::getLength() const { return length; } FunnyString::~FunnyString() { delete []sPtr; } ostream operator( ostream output, const FunnyString a ) { for (int i=0;ia.length;i++) outputa.sPtr[i]; return output; } istream operator( istream input, FunnyString a) { char b[100]; inputb; a.length=strlen(b); delete []a.sPtr; a.sPtr=new char [a.length+1]; for (int i=0;istrlen(b);i++) { a.sPtr[i]=b[i]; } return input; } const FunnyString FunnyString::operator= (const FunnyString a) { if (a != this) { delete []sPtr; length=a.length; setFunnyString(a.sPtr); return *this; } else return *this; } const FunnyString FunnyString::operator+=( const FunnyString a ) { FunnyString c; c=*this+a; *
显示全部
相似文档