In C++ beginner programmers often utilize the default behaviour of the compiler created copy constructor and assignment operator, often without realizing it. Eventually this practice causes problems (See the Rule of Three). Later the programmer develops an aversion to these default implementations. Some start automatically writing implementations whether they are needed or not. Some start disabling copy construction and assignment whenever they can get away with it.
Of course, then there are programmers who come full circle and use the default copy constructor and assignment operator implementations regularly. Usually this a result of religious use of member variable types that properly support copy construction, like smart pointers or container classes.
Sometimes I wonder if there's a way to teach C++ that would help beginners skip the intermediate steps and go right to choosing the right member variables. So far it seems like a pipe dream until we can get more of these useful classes into the standard library itself. Of course, it's like pulling teeth to get posters on our boards here to use std::vector, much less boost.