Default Constructor
For details, please read about the default constructor here.
One idea of why you'd like to use the = default to declare your default constructor would be if you have (one or more) constructor(s) with parameters. In this case, the default (parameterless) constructor is not generated. If you still need it, you can ask the compiler to create one for you, unless you want to do it on your own. :)
Example
class Foo
{
public:
Foo(int v) : _value(v) { }
Foo() = default;
private:
int _value;
};
int main()
{
Foo f;
return 0;
}
Explicit
I think explicit is explained pretty well here.
Basically, it's used to prevent automatic conversion from one object type to another. Only direct call to the constructor is allowed.
Example
A a1 = 42; // Only allowed if A::A(int) is not explicit
A a2(42); // Always allowed