¿Cómo puede ser posible la asignación de int a objeto en 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;
}

Hola chicos

Acabo de declarar una clase simple como la anterior.
Después de eso asigné el valor int al objeto de esa clase, ¡entonces funcionó!
(Imprimí su valor. Se almacenó correctamente)

Si no hay una construcción con el parámetro int, se produjo un error de compilación.
Entonces, creo que está relacionado con un constructor. ¿Está bien?

Por favor dame una buena explicación.
Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta