Prev Next Up Title Contents Index

Funktiomallit (funktiomuotti, function template)


#define-makroilla voidaan tehdä tyypistä riippumaton funktio. Makrojen huonot puolet on kuitenkin jo todettu. C++:ssa voidaan template -"tyyppimäärityksen" avulla generoida useita funktiota samalla "funktiomallilla":

tempfun.cpp - funktiomallit

	/* TEMPFUN.CPP */
	#include <stdio.h>
	...
	
	template <class T>
	T max(T a,T b)
	{
	  return a > b ? a : b;
	}
	
	template <class T>
	void swap(T &a, T &b)
	{
	  T t;
	  t = a; a = b; b = t;
	}
	
	int main(void)
	{
	  int    ia = 3  , ib = 5   ,ic = max(ia,ib);
	  double da = 3.1, db = 5.2 ,dc = max(da,db);
	
	  tulosta(ic); tulosta(dc);
	
	  swap(ia,ib); tulosta(ia); tulosta(ib);
	  swap(da,db); tulosta(da); tulosta(db);
	
	  return 0;
	}
Käytännössä kääntäjä generoi uuden tyyppejä vastaavan funktion (generoitu funktio = template function), kun funktiomallia kutsutaan uusilla "tuntemattomilla" parametreilla.

Tehtävä 1.7 Funktiomalli

Tutki miten käy TEMPFUN.CPP:ssä jos funktioita swap ja max kutsutaan sekaparametreilla.


Prev Next Up Title Contents Index