#include <iostream>
#include <string>
using std:: cout ; using std:: endl ;
struct pizza
{
std:: string mypizza;
pizza( const pizza& src) : mypizza( src.mypizza )
{
cout << "copy constructor " << this << "<-" << & src << endl;
}
pizza( const pizza&& src) : mypizza( std:: move ( src.mypizza ) )
{
cout << "move constructor " << this << "<-" << & src << endl;
}
pizza( std:: string makeof) : mypizza( makeof)
{
cout << "My constructor: " << this << " my pizza: " << mypizza << endl;
}
void customize( std:: string style)
{
mypizza + = ' ' + style;
cout << "custom pizza: " << mypizza << endl;
}
} ;
pizza customizepizza( pizza opizza, std:: string color)
{
opizza.customize ( color) ;
return opizza;
}
int main( )
{
pizza pizza_o = customizepizza( pizza( "neapolitan style" ) , "with olives" ) ;
cout << "my pizza " << pizza_o.mypizza << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBzdGQ6OmNvdXQ7IHVzaW5nIHN0ZDo6ZW5kbDsKc3RydWN0IHBpenphCnsKCXN0ZDo6c3RyaW5nIG15cGl6emE7CglwaXp6YShjb25zdCBwaXp6YSYgc3JjKTogbXlwaXp6YShzcmMubXlwaXp6YSkgCgl7CgkJY291dCA8PCAiY29weSBjb25zdHJ1Y3RvciAiIDw8ICB0aGlzIDw8ICI8LSIgPDwgJnNyYyA8PCBlbmRsOwoJfQoJcGl6emEoY29uc3QgcGl6emEmJiBzcmMpIDogbXlwaXp6YShzdGQ6Om1vdmUoc3JjLm15cGl6emEpKQoJewoJCWNvdXQgPDwgIm1vdmUgY29uc3RydWN0b3IgIiA8PCB0aGlzIDw8ICI8LSIgPDwgJnNyYyA8PCBlbmRsOwoJfQoJcGl6emEoc3RkOjpzdHJpbmcgbWFrZW9mKSA6IG15cGl6emEobWFrZW9mKQoJewoJCWNvdXQgPDwgIk15IGNvbnN0cnVjdG9yOiAiIDw8IHRoaXMgPDwgIiBteSBwaXp6YTogIiA8PCBteXBpenphIDw8IGVuZGw7Cgl9Cgl2b2lkIGN1c3RvbWl6ZShzdGQ6OnN0cmluZyBzdHlsZSkKCXsKCQlteXBpenphICs9ICcgJyArIHN0eWxlOwoJCWNvdXQgPDwgImN1c3RvbSBwaXp6YTogIiA8PCBteXBpenphIDw8IGVuZGw7Cgl9Cn07CnBpenphIGN1c3RvbWl6ZXBpenphKHBpenphIG9waXp6YSwgc3RkOjpzdHJpbmcgY29sb3IpCnsKCW9waXp6YS5jdXN0b21pemUoY29sb3IpOwoJcmV0dXJuIG9waXp6YTsKfQppbnQgbWFpbigpCnsKCXBpenphIHBpenphX28gPSBjdXN0b21pemVwaXp6YShwaXp6YSgibmVhcG9saXRhbiBzdHlsZSIpLCAid2l0aCBvbGl2ZXMiKTsKCWNvdXQgPDwgIm15IHBpenphICIgPDwgcGl6emFfby5teXBpenphIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==