运算符重载string运算符.docx
文本预览下载声明
运算符重载
#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;
*
显示全部