#include <iostream>
using namespace std;
struct foo
{
int i;
foo(int i): i(i) { cout << "int constructor, i = " << i << '\n'; }
foo(const foo&f): i(f.i) {cout << "Copy constructor, i = " << i << '\n';}
void operator=(const foo&f) {i = f.i; cout << "Assignment. i = " << i << '\n'; }
~foo() {cout << "Destructor. i = " << i << '\n'; }
};
int main()
{
foo a(5);
foo b= 6;
foo c = foo(7);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IGZvbwp7CiAgaW50IGk7CiAgZm9vKGludCBpKTogaShpKSB7IGNvdXQgPDwgImludCBjb25zdHJ1Y3RvciwgaSA9ICIgPDwgaSA8PCAnXG4nOyB9CiAgZm9vKGNvbnN0IGZvbyZmKTogaShmLmkpIHtjb3V0IDw8ICJDb3B5IGNvbnN0cnVjdG9yLCBpID0gIiA8PCBpIDw8ICdcbic7fQogIHZvaWQgb3BlcmF0b3I9KGNvbnN0IGZvbyZmKSB7aSA9IGYuaTsgY291dCA8PCAiQXNzaWdubWVudC4gaSA9ICIgPDwgaSA8PCAnXG4nOyB9CiAgfmZvbygpIHtjb3V0IDw8ICJEZXN0cnVjdG9yLiBpID0gIiA8PCBpIDw8ICdcbic7IH0KfTsKCgppbnQgbWFpbigpCnsKICBmb28gYSg1KTsKICBmb28gYj0gNjsKICBmb28gYyA9IGZvbyg3KTsKfQo=