Prev Next Up Title Contents Index

Oletusparametrit (default arguments)


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 - funktion kuormitus (overloading)

	/* 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 - oletusparametrit

	/* 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);
	}
	

Tehtävä 1.5 Oletusarvot

Miksi oletusarvoja tulee kirjoittaa oikealta vasemmalle? Keksi 2 muuta esimerkkiä oletusarvon käytöstä.


Prev Next Up Title Contents Index