Kezdőoldal » Számítástechnika » Programozás » A sablonok mire vannak mire...

A sablonok mire vannak mire találták ki őket? Egy hete próbálom megérteni a c++ nak a sablonok nyelvi részét de nem megy.

Figyelt kérdés
2012. dec. 10. 14:20
1 2
 1/15 anonim ***** válasza:

A kulcsszó a kód újra felhasználás.

Nem kell ugyan azt újra és újra lekódolnod.

2012. dec. 10. 14:30
Hasznos számodra ez a válasz?
 2/15 A kérdező kommentje:

Igen tudom erre jó egy függvény is nem kell 1000 szer bele írnom a main() ba a kódot hanem meghívom csak mindig a függvényt és kész.


Nekem azzal van bajom,hogy nem tudom,hogyan kell használni a sablonokat mert nem értem.Ezt kéne elmagyaráznia valakinek.

2012. dec. 10. 14:35
 3/15 anonim ***** válasza:

Van egy általános listád. Ami tárol valamilyen elemeket, mondjuk számokat. Amikor beteszel egy elemet senki nem szól rád, hogy "hééé eddig csupa számot tettél be, most meg egy stringet" és amikor kiveszel akkor neked kell ellenőrizni, hogy amit kivettél az az-e amire számítasz! Kiveszed és számmá konvertálod, mert úgy gondolod, hogy szám van benne, közben meg az a string, hogy "tíz". Az ilyen hiba csak futásidőben fog kiderülni, amikor a felhasználónál ugrálnak elő a piros ablakok, hogy fatál error.

A sablonok használatával a sablon osztályból a fordító automatikusan generál egy osztályt, ami csak a sablonban megadott értékeket fogadja el és csak azokkal dolgozik. Ekkor már a fordító tudja ellenőrizni, hogy a list<int>-be te tényleg csak inteket tudsz bepakolni és csak is inteket fog neked visszaadni.

Aztán persze a sablonokkal lehet nagyon elborult dolgokat is csinálni, amik mind-mind fordítási időben hajtódnak végre.

2012. dec. 10. 14:42
Hasznos számodra ez a válasz?
 4/15 A kérdező kommentje:
Én nem értem ezt.
2012. dec. 10. 15:18
 5/15 A kérdező kommentje:

Szóval arra vannak a sablonok ha esetleg nem tudom,hogy milyen típust fog fogadni a függvény akkor sablonokat használva úgyis a megfelelő típust behelyettesíti.


template <class T> T min(T a, T b) {


Itt a template kulcsszóval lehet sablonokat definiálni.

Akkor ez egy függvénysablon.


<> jelek között kell megadni azt,hogy mit is?

T lesz a típus az az a sablon egy példánya a T nem?

2012. dec. 10. 15:34
 6/15 A kérdező kommentje:
Nem értem.
2012. dec. 10. 15:35
 7/15 A kérdező kommentje:

//main.cpp

#include<iostream>


template<class T> T osszead(const T, const T);


int main(){



return 0;

}


T osszead(const T x, const T y){

return x+y;

}


Itt azt írja,hogy nem létezik a T típus ezért nem fordul le.Igen amúgy igaza van a fordítónak.De akkor,hogyan csináljam meg?


main felett a függvény deklarációja main alatt meg a definíciója lenne.

2012. dec. 10. 15:49
 8/15 A kérdező kommentje:

//main.cpp

#include<iostream>


template<class T> T osszead(const T, const T);


int main(){

int j = 8, k = 8, s;

s = osszead(j,k);

std::cout << s ;


return 0;

}


template<class T>T osszead(const T x, const T y){

return x+y;

}


Így már jó de itt nem történik felüldefiniálás.

A main feletti a deklaráció a main alatti meg a definíció.

Jól mondom?

2012. dec. 10. 15:55
 9/15 anonim ***** válasza:
A class T helyére egy konkrét osztály kell lennie, az amivel a függvény dolgozni fog.
2012. dec. 10. 16:00
Hasznos számodra ez a válasz?
 10/15 iostream ***** válasza:
Template: akkor használjuk, ha az algoritmus vagy típus amit lekódolunk, nagyjából független a típustól amin dolgozik, amivel dolgozik. Például a rendezés olyan algoritmus, hogy neki halál mindegy, mit rendez, csak össze kell tudnia hasonlítani őket, és másolgatni. A konténerek tipikusan olyan adatszerkezetek, amiknek mindegy, mit tárolnak, típusfüggetlenül tudják azt tenni. Ekkor template-t használunk. A szintaxisnak meg nézz utána.
2012. dec. 10. 16:14
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!