I define a class named MyString. Part of it follows:

class MyString{
private:
char *Str;
int Length;
public:
MyString():Str(NULL),Length(0) {}

MyString(const MyString &rhs);

~MyString() {delete [] Str;}
};


Why am i allowed to use rhs's private variable rhs.Str from a method of another object? What am i doing wrong?


MyString::MyString(const MyString &rhs)
{
Str = new char[rhs.Length +1];
for(int i=0;i<=Length;i++) *(rhs.Str+i)= *(Str+i);
cout<<"Copy Constructor Called...";
}