有这样一个类:
class Str
{
char str[100];
int n;
public:
Str(const char *pstr = "\0"){
strcpy(str, pstr);
n = strlen(str);
}
const char *getstr()const{ return str; }
const int getcount()const{ return n; }
void add(char *pstr){
if ((strlen(str) + strlen(pstr)) < 100)
{
strcat(str, pstr);
n = strlen(str);
}
else
cout << "size error!\n";
}
void show()const{ cout << str; }
~Str(){}
};
这个类仿string类(劣质),允许用户将字符串相加(有限制),并且计算字符个数。
但是我们更想用类似内置类型那样的运算方法:
int a=1,b=3;
a=a+b;
而不是经过对象的方法调用来实现:
Str s1("Hello ");
s1.add("words!");//不想这样使用
s1.show();//想用cout<<s1;来输出
比如说我们想用下面的方法不是调用类方法(add)来进行字符串相加:
Str s2("c++!");
s1=s1+s2;
这就需要重载运算符“+”。
返回值 operator符号(参数列表);
我们先来重载运算符“=”使之能够进行两个对象的赋值操作,现在看看是怎么使用的:
class Str
{
...
public:
...
//之前的