Construtor padrão c ++

Estou tentando entender como o construtor padrão (fornecido pelo compilador se você não escrever um) versus seu próprio construtor padrão funciona.

Então, por exemplo, eu escrevi esta classe simples:

class A
{
    private:
        int x;
    public:
        A() { std::cout << "Default constructor called for A\n"; }
        A(int x)
        {
            std::cout << "Argument constructor called for A\n";
            this->x = x;
        }
};

int main (int argc, char const *argv[])
{
    A m;
    A p(0);
    A n();

    return 0;
}

A saída é:

Construtor padrão chamado A

O construtor de argumentos chamou A

Então, para o último, há outro construtor chamado e minha pergunta é qual e qual o tipo n nesse caso?

questionAnswers(4)

yourAnswerToTheQuestion