Para concretar:
Una función es, o un trozo de código que quieres "encapsular", también llamado sub-rutina o sub-programa, o, como una función matemática, a la que tú le das unos valores de entrada y ella te da unos valores de salida.
En el primer caso, usar cout/cin o cualquier otro método de entrada o salida es totalmente válido (mientras sea coherente, claro, generelizar es complicado).
En el segundo caso, rara vez querrás hacer eso.
Tu ejemplo claramente es del "segundo tipo". Tú le das unos valores de entrada (a, b), y ella te da un valor de retorno que ella calcula (MCD). La forma de usar esa función es como dijo engel lex.
Imagínate que el MCD no lo quieres sacar por pantalla con cout, sino que quieres guardarlo en un archivo. Tendrías que modificar la función para lograrlo, mientras que haciendo que retorne el valor, sería tan simple como:
archivo << MCD(5,8);
U otro ejemplo:
int n = 50 / MCD(50, 25);
for(int i=0; i<n; i++){
// ...
}