class Data
{
int m_p;
public:
Data(int p = 0)
: m_p(p)
{
std::printf("Data(int) - [%d]\n", m_p);
}
Data(const Data& rha)
: m_p(rha.m_p)
{
std::printf("Data(const Data&) - [%d]\n", m_p);
}
Data(Data&& rha)
: m_p(std::move(rha.m_p))
{
std::printf("Data(Data&&) - [%d]\n", m_p);
rha.m_p *= -1;
}
Data& operator=(const Data& rha)
{
std::printf("Data::operator=(const Data&) - [%d]\n", m_p);
if (this == &rha)
{
return *this;
}
m_p = rha.m_p;
return *this;
}
Data& operator=(Data&& rha)
{
std::printf("Data::operator=(Data&&) - [%d]\n", m_p);
if (this == &rha)
{
return *this;
}
m_p = std::move(rha.m_p);
rha.m_p *= -1;
return *this;
}
~Data()
{
std::printf("~Data - [%d]\n", m_p);
}
};