- 论坛徽章:
- 0
|
#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(){return ps;}
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(void)
{
A s1("C++" ), s2("C" );
cout<<"s1="<<s1.GetS()<<endl;
cout<<"s2="<<s2.GetS()<<endl;
s1=s2;
cout<<"s1="<<s1.GetS()<<endl;
cout<<"s2="<<s2.GetS()<<endl;
}
A & operator=(A & ) ;这个函数我不太清楚
我不知道,为什么要返回*this,这个*this又赋给了谁?
我就将红色部分改成 void
并且注释了蓝色部分。
在我看来,s1=s2时,编译器解释为s1.operator=(s2)。所以自然是s1的ps做了更新。
所以我不理解,为什么要返回*this?this是指向s1的指针,*this是什么?又赋给了谁? |
|