In your code example, nothing is mechanically broken if the destructor that you forgot to publish performs symmetric deletion.
Although conditionally (more secure and less boilerplate) you need something like
#include <memory>
class Mallard {
std::unique_ptr<SomeLargeObject> that_;
public:
Mullard(): that_(new SomeLargeObject)
{}
};
:
(@Praetorian, @RemyLebeau, @AdrianMcCarthy), , , , . std::unique_ptr ( ).