#include <iostream>
#include <cstring>
using namespace std;
class foo
{
char *str;
int len;
static int number;
public:
foo();
foo(const foo&);
void get();
~foo();
};
int foo::number = 0;
foo::foo()
{
str = 0;
len = 0;
cout << "Simple Constructor\n";
}
foo::foo(const foo &st)
{
len = strlen(st.str);
str = new char[len+1];
strcpy(str,st.str);
number++;
cout << str << endl;
}
void foo::get(){
static char buf[1024];
cin.getline(buf, 1024);
len = strlen(buf);
str = new char[1 + len];
strcpy(str, buf);
}
foo::~foo()
{
cout << number-- << endl;
delete [] str;
}
int main()
{
foo f1;
f1.get();
foo f2 = f1;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjbGFzcyBmb28KewogICAgY2hhciAqc3RyOwogICAgaW50ICAgbGVuOwogICAgc3RhdGljIGludCBudW1iZXI7CnB1YmxpYzoKICAgIGZvbygpOwogICAgZm9vKGNvbnN0IGZvbyYpOwogICAgdm9pZCBnZXQoKTsKICAgIH5mb28oKTsKfTsKCmludCBmb286Om51bWJlciA9IDA7CmZvbzo6Zm9vKCkKewogICAgc3RyID0gMDsKICAgIGxlbiA9IDA7CiAgICBjb3V0IDw8ICJTaW1wbGUgQ29uc3RydWN0b3JcbiI7Cn0KZm9vOjpmb28oY29uc3QgZm9vICZzdCkKewogICAgbGVuID0gc3RybGVuKHN0LnN0cik7CiAgICBzdHIgPSBuZXcgY2hhcltsZW4rMV07CiAgICBzdHJjcHkoc3RyLHN0LnN0cik7CiAgICBudW1iZXIrKzsKICAgIGNvdXQgPDwgc3RyIDw8IGVuZGw7Cn0Kdm9pZCBmb286OmdldCgpewogICAgc3RhdGljIGNoYXIgYnVmWzEwMjRdOwogICAgY2luLmdldGxpbmUoYnVmLCAxMDI0KTsKICAgIGxlbiA9IHN0cmxlbihidWYpOwogICAgc3RyID0gbmV3IGNoYXJbMSArIGxlbl07CiAgICBzdHJjcHkoc3RyLCBidWYpOwp9CmZvbzo6fmZvbygpCnsKICAgIGNvdXQgPDwgbnVtYmVyLS0gPDwgZW5kbDsKICAgIGRlbGV0ZSBbXSBzdHI7Cn0KCmludCBtYWluKCkKewogICAgZm9vIGYxOwogICAgZjEuZ2V0KCk7CiAgICBmb28gZjIgPSBmMTsKIAogICAgcmV0dXJuIDA7Cn0=