Ablone funkcij
This presentation is the property of its rightful owner.
Sponsored Links
1 / 11

Šablone funkcij PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

Šablone funkcij. Šablone (template s ) uporabljamo takrat, kadar želimo izvesti nad različnimi podatki identične operacije. Šablone nam omogočajo, da zapišemo implementacijo funkcije samo enkrat, kopije z ustreznimi tipi (konkretne funkcije) pa napravi prevajalnik v času prevajanja.

Download Presentation

Šablone funkcij

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ablone funkcij

Šablone funkcij

Šablone (templates) uporabljamo takrat, kadar želimo izvesti nad različnimi podatki identične operacije. Šablone nam omogočajo, da zapišemo implementacijo funkcije samo enkrat, kopije z ustreznimi tipi (konkretne funkcije) pa napraviprevajalnik v času prevajanja.


Ablone funkcij1

Šablone funkcij

template <class T>

T max(T vr1, Tvr2, Tvr3)

{

T max = vr1;

if (vr2 > max) max = vr2;

if (vr3 > max) max = vr3;

return max;

}


Uporaba ablone funkcij e

Uporaba šablone funkcije

#include <iostream.h>

main()

{ int i1,i2,i3;

cout << "Vpisi tri cela stevila: ";

cin >> i1 >> i2 >> i3;

float f1,f2,f3;

cout << "Vpisi tri realna stevila: ";

cin >> f1 >> f2 >> f3;

char c1,c2,c3;

cout << "Vpisi tri znake: ";

cin >> c1 >> c2 >> c3;

cout << "Najvecje celo stevilo: ";

cout << max(i1,i2,i3) << endl;

cout << "Najvecje realno stevilo: ";

cout << max(f1,f2,f3) << endl;

cout << "Največji znak: ";

cout << max(c1,c2,c3) << endl;

return 0;

}


Ablone funkcij in prekrivanje

Šablone funkcij in prekrivanje

Vse funkcije, definirane z določeno šablono, imajo enako ime, zato prevajalnik določi pravo funkcijo s prekrivanjem.

Prekrijemo lahko tudi samo šablono, tako da:

  • podamo novo šablono funkcije z istim imenom in drugimi argumenti,

  • podamo definicijo funkcije (ne šablone) z istim imenom in istimi argumenti.


Ablone razredov

Šablone razredov

Šablonarazreda deluje enako kot šablona funkcije, le da prevajalnik namesto funkcij naredi razrede. Tako npr. iz šablone razreda seznam tvorimo seznam celih števil, seznam znakov, seznam oseb itd..

Šablono razredov imenujemo tudi parameterizirani tip, ker z enim ali več parametrov določimo konkretno šablono (konkretni razred, torej “abstraktni tip”).

.


Primer definicije ablone razreda seznam z enim parametrom ki dolo a tip elementov seznama

Primer definicije šablone razreda seznam z enim parametrom, ki določa tip elementov seznama:

// datoteka seznam.h

template<class tip> // določa, da je to šablona; sledijo formalni parametri

class seznam

{…

seznam(); // konstruktor

void VstaviZaTrenutno(tip element);

void VstaviPredTrenutno(tip element);

vozlisce<tip>* k_zacetek; // vozlisce<tip> je šablona vozlisca, definirana drugje

};

template<class tip> // to vrstico ponovimo pred vsako definicijo funkcije šablone!

seznam<tip>::seznam()

{ k_zacetek=NULL;};

…itd.


Primer uporabe ablone razreda seznam

Primer uporabe šablone razreda seznam:

// datoteka seznam.cpp

#include “seznam.h”

Int main()

{

seznam<int> moj_seznam1; // objekt seznama celih števil

seznam <float> moj_seznam2; // objekt seznama realnih števil

moj_seznam1.VstaviPredTrenutno(6);

moj_seznam2.VstaviPredTrenutno(3.145926);

… itd.

return 0;

}


Ablone funkcij

Primer definicije šablone razreda sklad, kjer drugi parameter določa vrednost - največjo velikost sklada:

// datoteka sklad.h

template<class tip, int max_elem> // drugi formalni parameter je vrednost

class sklad

{…

bool JePoln();

void Vstavi (tip element);

tip polje_sklada[max_elem];

int vrh;

};

// “template” s formalnimi parametri ponovimo pred definicijo funkcije šablone!

template<class tip, int max_elem>

sklad<tip,maxelem>::JePoln()

{ if (vrh==max_el) return true else return false;};


Primer uporabe ablone razreda sklad

Primer uporabe šablone razreda sklad:

// datoteka sklad.cpp

#include “sklad.h”

Int main()

{

sklad<int,100> moj_sklad; // objekt sklada celih števil (največ 100)

if (moj_sklad.JePoln()==false)

moj_sklad.Vstavi (6); // vstavi element na sklad

… itd.

return 0;

}


Ablone razredov in dedovanje

Šablone razredov in dedovanje

Dedovanje omogoča prilagajanje že napisanih šablon.

Z dedovanjem izpeljemo iz šablone novo šablono.

V šablonah lahko definiramo prijatelje, pri čemer delujejo enaka pravila kot pri prijateljih razredov.


Primer izpeljave ablone razreda sklad iz ablone razreda seznam

Primer izpeljave šablone razreda sklad iz šablone razreda seznam:

// datoteka skladizp.h

#include “seznam.h”

template<class tip>

class sklad: private seznam<tip> // sklad deduje po šabloni seznam

{public:

void Vstavi (tip element) {VstaviZaTrenutno(element);};

};


  • Login