string 的现代式写法
#include<iostream>
using namespace std;
class String
{
friend ostream& operator<<(ostream &os,String &str);
public:
String()
{
_str=new char[1];
*_str='\0';
}
//
String(char *str):_str(new char[(strlen(str)+1)])
{
strcpy(_str,str);
}
//拷贝构造函数的现代式写法
String(const String &str)
{
_str=new char[1];
String tmp(str._str);
swap(_str,tmp._str);
}
//
~String()
{
if(_str!=NULL)
delete [] _str;
}
//
String operator=( String &str)
{
if(this!=&str)
{
String tmp(str);
swap(_str,tmp._str);
}
return *this;
}
//
int my_strcmp(const char *str1,const char *str2)
{
while(str1!=NULL&&str2!=NULL)
{
if(*str1==*str2)
{
*str1++;
*str2++;
}
if(*str1<*str2)
return -1;
else if(*str1>*str2)
return 1;
}
return 0;
}
bool operator==(const String &str)
{
if(my_strcmp(this->_str,str._str)==0)
{
return true;
}
return false;
}
//
int operator>(const String &str)
{
if(my_strcmp(this->_str,str._str)>0)
{
return 1;
}
return -1;
}
//
int operator<(const String &str)
{
if(my_strcmp(this->_str,str._str)<0)
{
return 1;
}
return -1;
}
private:
char* _str;
};
ostream& operator<<(ostream &os,String &str)
{
os<<str._str<<endl;
return os;
}
int main()
{
String str1("abc");
String str2(str1);
String str3;
str3=str2;
String str4("aba");
cout<<str2<<endl;
cout<<str3<<endl;
cout<<str4.operator>(str1)<<endl;
system("pause");
return 0;
}