Como a atribuição de int para objeto é possível em C ++?

class phone {  
    public:  
        phone(int x) { num = x; }
        int number(void) { return num; }
        void number(int x) { num = x; }

    private:
        int num;
};

int main(void)
{
    phone p1(10);

    p1 = 20;    // here!

    return 0;
}

Oi pessoal

Apenas declarei uma classe simples como a acima.
Depois disso, atribuai int value ao objeto dessa classe, então funcionou!
(Imprimi seu valor. Ele foi armazenado corretamente)

Se não houver uma construção com o parâmetro int, ocorreu um erro de compilação.
Então, acho que está relacionado a um construtor. Isso está certo?

Por favor me dê uma boa explicação.
Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion