リソースを抱えるときはデストラクタとコピーコンストラクタとoperator=を書くのかー。へー。
試しに自分自身を代入して、……-842150451?
#include <iostream>
struct Unko
{
int *resource;
Unko() : resource(new int) {}
~Unko() { delete resource; }
Unko(const Unko& unko) : resource(new int) { *resource = *unko.resource; }
Unko& operator=(const Unko& rUnko)
{
delete resource;
resource = new int;
*resource = *rUnko.resource;
return *this;
}
};
int main()
{
Unko unko;
*unko.resource = 42;
unko = unko;
std::cout << *unko.resource << std::endl;
return 0;
}
operator=で、deleteとnewは必要無いような。。