The C++ Rule of Three

The “Rule of Three” states that if you need to define one of assignment operator, copy constructor, or destructor then you probably need to define all three.
This is because defining any one implies that your class has state to manage, and if it does this needs to be considered in the other two cases.

You can prevent the managed state from being copied by making the assignment operator and copy constructor private. This makes the class non-copyable.
This can also be implemented by inheriting the class from boost::noncopyable.

If the primary purpose of your class is not resource management, you can avoid implementing any of the Rule of Three methods by wrapping the resources in classes that are designed for resource management, i.e., smart pointers like boost::shared_ptr.