It's possible that someone has already asked about this but googling for "default", "defaulted", "explicit" and so on doesn't give good results. But anyway.
I already know there are some differences between an explicitly defined default construtor (i.e. without arguments) and an explicitly defined defaulted constructor (i.e. with the keyword default
), from here: The new keyword =default in C++11
But what are the differences between an explicitly defined defaulted constructor and implicitly defined one (i.e. when the user doesn't write it at all)?
class A
{
public:
A() = default;
// other stuff
};
vs
class A
{
// other stuff
};
One thing that comes to mind is that when there is a non-default constructor then the user also has to define a default constructor explicitly. But are there any other differences?
Edit: I'm mostly interested in knowing if there's any good reason to write A() = default;
instead of just omitting the constructor altogether (assuming it's the only explicitly defined constructor for the class, of course).