我是vc++的初学者,在关于赋值运算符重载方面有几个问题,希望大家能帮忙解决!万分感谢!
内容见附件!谢谢!也可见下:
#include<iostream.h>
#include<string.h>
class A
{
char *ps;
public:
A(){ps=0;}
A(char *s)
{
ps=new char[strlen(s)+1];
strcpy(ps,s);
}
~A()
{
if(ps) delete[]ps;
}
char *GetS()
{
if(ps)return ps;
else return "0";
}
A &operator=(A &b) //用以下三句替代均出现错误
// A operator=(A &b) 为什么返回值必须是引用类型?否则出错!!!
// A &operator=(A b) 参数采用值传递,不会产生对参数不小心的修改,但为何要采用引用传递?否则出错!!!
// A operator=(A b) 运行出错!
{
//if(ps)delete[]ps;
if(b.ps)
{
// ps=new char[strlen(b.ps)+1];
strcpy(ps,b.ps);
}
else ps=0;
return *this;
}
};
void main()
{
A s1("Computer!"),s2("China!");
cout<<s1.GetS()<<'\t';
cout<<s2.GetS()<<endl;
s1=s2;
cout<<s1.GetS()<<'\t';
cout<<s2.GetS()<<endl;
}