#include <iostream>
struct myBigObject
{
size_t x;
myBigObject() : x() {}
myBigObject(const myBigObject &other)
{
std::cout << "Copy myBigObject" << std::endl;
x = 12;
}
};
struct MyClass
{
MyClass(myBigObject s)
: s_(s)
{
std::cout << "x of s : " << s.x << std::endl;
std::cout << "x of s_ : " << s_.x << std::endl;
}
myBigObject s_;
};
int main()
{
std::cout << "A:" << std::endl;
MyClass x{ myBigObject() };
std::cout << "B:" << std::endl;
myBigObject y;
MyClass z{ y };
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgc3RydWN0IG15QmlnT2JqZWN0CiAgICB7CiAgICAgIHNpemVfdCB4OwogICAgICBteUJpZ09iamVjdCgpIDogeCgpIHt9CiAgICAgIG15QmlnT2JqZWN0KGNvbnN0IG15QmlnT2JqZWN0ICZvdGhlcikKICAgICAgewogICAgICAgIHN0ZDo6Y291dCA8PCAiQ29weSBteUJpZ09iamVjdCIgPDwgc3RkOjplbmRsOwogICAgICAgIHggPSAxMjsKICAgICAgfQogICAgfTsKCiAgICBzdHJ1Y3QgTXlDbGFzcwogICAgewogICAgICAgIE15Q2xhc3MobXlCaWdPYmplY3QgcykKICAgICAgICAgIDogc18ocykgCiAgICAgICAgeyAKICAgICAgICAgIHN0ZDo6Y291dCA8PCAieCBvZiBzIDogIiA8PCBzLnggPDwgc3RkOjplbmRsOwogICAgICAgICAgc3RkOjpjb3V0IDw8ICJ4IG9mIHNfIDogIiA8PCBzXy54IDw8IHN0ZDo6ZW5kbDsKICAgICAgICB9CiAgICAgICAgbXlCaWdPYmplY3Qgc187CiAgICB9OwoKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgc3RkOjpjb3V0IDw8ICJBOiIgPDwgc3RkOjplbmRsOwogICAgICBNeUNsYXNzIHh7IG15QmlnT2JqZWN0KCkgfTsKICAgICAgc3RkOjpjb3V0IDw8ICJCOiIgPDwgc3RkOjplbmRsOwogICAgICBteUJpZ09iamVjdCB5OwogICAgICBNeUNsYXNzIHp7IHkgfTsKICAgIH0=