#include <iostream>
struct Foo
{
explicit Foo(int i) : i_(i) {std::cout << "Foo constructor " << i_ << std::endl;}
Foo(const Foo& rhs) : i_(rhs.i_)
{
std::cout << "Foo copy constructor" << i_ << std::endl;
}
Foo& operator=(const Foo& rhs)
{
i_ = rhs.i_;
std::cout << "Foo copy assignment" << i_ << std::endl;
}
~Foo() { std::cout << "Foo destructor " << i_ << std::endl;}
int i_;
};
int main()
{
{
Foo f1 = *new Foo(1);
Foo f2(2);
}
std::cout << "Bye" << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEZvbwp7CiAgICBleHBsaWNpdCBGb28oaW50IGkpIDogaV8oaSkge3N0ZDo6Y291dCA8PCAiRm9vIGNvbnN0cnVjdG9yICIgPDwgaV8gPDwgc3RkOjplbmRsO30KICAgIEZvbyhjb25zdCBGb28mIHJocykgOiBpXyhyaHMuaV8pCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGb28gY29weSBjb25zdHJ1Y3RvciIgPDwgaV8gPDwgc3RkOjplbmRsOwogICAgfQogICAgRm9vJiBvcGVyYXRvcj0oY29uc3QgRm9vJiByaHMpCiAgICB7CiAgICAgICAgaV8gPSByaHMuaV87CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGb28gY29weSBhc3NpZ25tZW50IiA8PCBpXyA8PCBzdGQ6OmVuZGw7CiAgICB9CiAgICB+Rm9vKCkgeyBzdGQ6OmNvdXQgPDwgIkZvbyBkZXN0cnVjdG9yICIgPDwgaV8gPDwgc3RkOjplbmRsO30KICAgIGludCBpXzsKfTsKCmludCBtYWluKCkKewoKICAgIHsKICAgICAgICBGb28gZjEgPSAqbmV3IEZvbygxKTsKICAgICAgICBGb28gZjIoMik7CiAgICB9CiAgICBzdGQ6OmNvdXQgPDwgIkJ5ZSIgPDwgc3RkOjplbmRsOwp9