It's not inconsistent, you get what you ask for, nothing more, nothing less.
Quote:
Originally Posted by Corona688
1) You have overloaded the Dog() constructor. This means you get to choose what you pass into Uncopyable().
2) You don't pass anything into Uncopyable().
3) Therefore nothing gets passed into Uncopyable(). It uses the default constructor.
Quote:
1) You have overloaded the Dog() constructor. This means you get to choose what you pass into Uncopyable().
Quote:
This means you get to choose what you pass into Uncopyable().
What did you pass into Uncopyable() there? Nothing -- absolutely nothing.
What did it pass into Uncopyable()? Nothing, absolutely nothing.
The default copy constructor isn't called by the Dog() class because you overloaded it. It does what
you say, instead of the defaults. That's what overloading is for. If you want default behavior, either don't overload it, or call it yourself...