Конструктор по умолчанию c ++

Я пытаюсь понять, как работает конструктор по умолчанию (предоставляемый компилятором, если вы его не пишете) по сравнению с вашим собственным конструктором по умолчанию.

Так, например, я написал этот простой класс:

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

Аргумент конструктор призвал к

Итак, для последнего есть другой конструктор, и мой вопрос в том, какой и какой тип n имеет в этом случае?

Ответы на вопрос(4)

Ваш ответ на вопрос