#include <iostream>
#include <cstring>
using namespace std;
class Person
{
public:
char * str;
Person(Person& n)
{
cout << "copy constructor1 " << n.str << endl;
int len;
len = strlen(n.str);
str = new char[len + 1];
strcpy(str, n.str);
}
Person(const Person& n)
{
cout << "copy constructor2 " << n.str << endl;
int len;
len = strlen(n.str);
str = new char[len + 1];
strcpy(str, n.str);
}
Person(const char* s)
{
cout << "normal constructor" << endl;
int len;
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
~Person()
{
cout << "destructor" << endl;
delete[] str;
}
void display()
{
cout << str << endl;
}
};
void whatName(Person n)
{
n.display();
}
int main()
{
Person p1("Jack");
whatName(p1);
whatName("Mary");
return 0;
}