|
|
#include <iostream>
#include <string>
using namespace std;
class str
{private:
char *st;
public:
str(char *a)
{set(a);
}
str & operator=(____)
{delete st;
set(a.st);
return *this;
}
void show(){cout<<st<<endl;}
~str(){delete st;}
void set(char *s)//初始化st
{_____
strcpy(st,s);
}
};
void main()
{str s1("he"),s2("she");
s1.show(),s2.show();
s2=s1;
s1.show(),s2.show();}
|
答案:str &a,st=new char[strlen(s)+1];
[解析]对“=”运算符进行重载,调用时s2=s1,都是对象,所以形参使用对象的引用,不要使用对象作为形参(产生临时对象)。使用strcpy进行字符的复制,st必须有一定的空间,空间是strlen(s)+1(‘\0’作为结束符,strlen得到的长度不包括结束符)。
|
|