I don't think that there's any requirement, its just that references
are far more efficient. Also your assignment code is wrong:
Code:
void MyClass::Operator=(const MyClass& rsideObj)
{
if (this!=&rsideObj) //check if rightside is leftside object itself.
exit(1);
else
{
delete [] pArr;
pArr = new char[strlen(rsideObj.pArr) + 1];
strcpy(a,rsideObj.pArr);
}
}
should actually be this:
Code:
void MyClass::Operator=(const MyClass& rsideObj)
{
if (this!=&rsideObj) //check if rightside is leftside object itself.
{
delete [] pArr;
pArr = new char[strlen(rsideObj.pArr) + 1];
strcpy(a,rsideObj.pArr);
}
return;
}
similarly, your alternative will be this:
Code:
MyClass& MyClass::Operator=(const MyClass& rsideObj)
{
if (this!=&rsideObj) //check if rightside is leftside object itself.
{
delete [] pArr;
pArr = new char[strlen(rsideObj.pArr) + 1];
strcpy(a,rsideObj.pArr);
}
return *this;
}
See why?
[update]
operator is a keyword - not Operator.
[/update]