Det är en initieringslista. Som du ser så innehåller den medlemsvariablerna m_data och m_pNext, och vad som händer är att dessa ges värdena från parametrarna data och pNext som skickas in till funktionen. Skillnaden i din lärares lösning är att han bara har skrivit prototypen. Troligen kommer du om du kollar i resten av koden hitta något som ser ut i stil med:
Link (double data, Link *pNext)
{
m_data = data;
m_pNext = pNext;
}
Den funktionen gör samma sak som varianten med initieringslistan (det är inte riktigt samma sak, men skillnaden spelar ingen roll i det här fallet). Initieringslistor är mer användbart när man t.ex. vill återanvända en annan konstruktor istället för att kopiera kod, vilket bl.a. är bra när man håller på med arv. Just nu krånglar bara boken i onödan tycker jag, men det beror väl på vilken nivå den håller.
Jag är dock lite fundersam över varför funktionen Link, som tycks vara en konstruktor, inte heter Element som klassen, vilket konstruktorer ska göra vad jag vet.
Edit: Var lite sen tydligen.