您的位置:首页 > 编程语言 > C语言/C++

c++操作符重载

2016-04-06 20:12 447 查看
重载操作符的限制



操作符重载规则



class mystring
{
private:
char *s;
public:
mystring()
{

s = new char[1024];
cout << "mystring" << endl;
}
mystring(const mystring &it)
{
s = new char[1024];
memset(s,0,1024);
strcpy(s,it.s);
}

~mystring()
{
cout << "~mystring" << endl;
delete []s;
}
mystring operator =(const mystring &it)// str2 = str1;
{
memset(s,0,1024);
strcpy(s,it.s);
return *this;
}
mystring operator =(const char *str)// str2 = "test";
{
memset(s,0,1024);
strcpy(s,str);
return *this;
}
mystring operator =(int i)//str2 = 100;
{
memset(s,0,1024);
sprintf(s,"%d",i);
return *this;
}
mystring operator + (const mystring &it)//str3 = str1 +str2
{
strcat(s,it.s);
return *this;
}
mystring operator + (const char *str)//str3 = str1 + "aaaaaaaaa"
{
strcat(s,str);
return *this;
}
mystring operator + (int i)//str3 = str1 + 100
{
char temp[100] = {0};
sprintf(temp,"%d",i);
strcat(s,temp);
return *this;
}

friend mystring operator +(const char *str,const mystring &it);
};

mystring operator +(const char *str,const mystring &it)//str3 = "AAAA"+str1;
{
mystring str1;
char buf[1024] = {0};
sprintf(buf,"%s%s",str,it.s);
strcpy(str1.s,buf);
return str1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++