Why Does The destructor destroy the original object??
Hello,
this is also one of the weirdest problem that i came across and even you would agree to it..the code is
Code:
#include <string.h>
#include <iostream.h>
class str
{
char *s;
public:
~str()
{
delete s;
}
void getdata(char*);
void putdata();
friend int xstrlen(str);
};
int xstrlen(str A)
{
int l=0;
while(*A.s)
{
l++;
A.s++;
}
return l;
}
void str::getdata(char* p)
{
s=new char[strlen(p)+1];
strcpy(s,p);
}
void str::putdata()
{
cout<<s<<endl;
}
int main(void)
{
str A;
A.getdata("string");
A.putdata();
xstrlen(A);
A.putdata();
return 0;
}
Ok the 2nd A.putdata() prints garbage because when we come out of xstrlen the destructor gets called and destroys the object. That's fine but why does it destroy the original A object even though i have used call by value?? :) can anybody answer this to me??