大部分已经实现,小部分大同小异
因为上课还没上到运算符重载,以前写优先队列之类的都是friend重载,今天意外的发现有些不能用friend那个样子重载。
/**************
大概的已经完成了
***************/
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
/*int main(){
char s1[]="abc";
char s2[100];
strcpy(s2,s1);
printf("%s",s2);
}
*/
class STRING{
public:
STRING(const char* p=NULL){
if(p==NULL){
data = new char[100];
*data = '\0';
Size=0;
}
else{
Size = strlen(p);
data = new char[Size+1];
strcpy(data,p);
}
}
void operator = (const STRING& S1){
strcpy(data,S1.data);
return;
}
bool operator == (const STRING& s1){
return strcmp(data,s1.data);
}
friend ostream& operator << (ostream& out, const STRING& str){
out<<str.data;
return out;
}
friend istream& operator >> (istream& in, const STRING& str){
in>>str.data;
return in;
}
~STRING(void){
if(data != NULL){
delete[] data;
}
}
int operator [](int x){
return *(data+x);
}
private:
char *data;
int Size;
};
int main(){
STRING S1="hello";
cin>>S1;
cout<<S1;
}