Kuvitteellisesti funktion lisämäärittelemisen (kuormittamisen) eräs erikoistapaus on oletusparametrit. Parametrilistan esittelyssä voidaan ilmoittaa mitä arvoa parametrilla käytetään, mikäli parametria ei ole kutsussa annettu. Funktion uudelleen määrittelyllähän voitaisiin kirjoittaa:
/* OVERLOA2.CPP */ #include <stdio.h> void tulosta(int i) { printf("Kokonaisluku on %d\n",i); } void tulosta(int i, int tila) { printf("Kokonaisluku on %*d\n",tila,i); } int main(void) { tulosta(3); tulosta(3,10); return 0; }Sama voidaan kirjoittaa oletusparametrin avulla:
/* DEFAULT.CPP */ #include <stdio.h> void tulosta(int i, int tila=1) { printf("Kokonaisluku on %*d\n",tila,i); } int main(void) { tulosta(3); tulosta(3,10); return 0; }Oletusarvoja tulee kirjoittaa oikealta vasemmalle, eli jos yhdelläkin parametrilla on oletusarvo, pitää kaikilla sen oikealle puolella olevilla olla oletusarvo.
Oletusarvot saavat esiintyä vain funktion ensimmäisessä esittelyssä, eli ensimmäisessä prototyypissä jos funktiolle on prototyyppi tai funktion esittelyssä jollei prototyyppiä ole!
void tulosta(int i, int tila=1); void tulosta(int i, int tila=1) { printf("Kokonaisluku on %*d\n",tila,i); }