Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.

Hasonló előadás


Az előadások a következő témára: "UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus."— Előadás másolata:

1 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus tömbök, névterek

2 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Paraméter átadás  Paramétereket három féle módon adhatunk át függvényeknek:  Érték szerint (C…)  Változó (vagy objektum) címének átadásával (C…)  Referencia alapján (C++, Java…)

3 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Érték szerinti paraméter átadás  A változó vagy objektum értéke lemásolódik a verembe a függvény hívásakor.  A függvény belsejében nem az eredeti változóval vagy objektummal dolgozunk.  A függvény végén ezek a változók vagy objektumok felszabadulnak.

4 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Érték szerinti paraméter átadás  példa void function( int a ) { a++; } int main( int argc, char** argv ) { int a = 5; function( a ); std::cout << a << std::endl; }

5 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Pointer (cím) átadása  A változó vagy objektum nem másolódik le.  A függvény belsejében az eredeti változóval vagy objektummal dolgozunk.  A függvény végén nem szabadulnak fel.  Gyakorlatilag egy pointert állítunk a változóra és a pointeren keresztül érjük azt el.

6 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Pointer (cím) átadása  példa void function( int* a ) { (*a)++; } int main( int argc, char** argv ) { int a = 5; function( &a ); std::cout << a << std::endl; }

7 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Referencia  A pointerek nehézkes használata miatt a C++-ban bevezették a referencia típust.  Nagyon hasonló a pointerhez, de referenciánál nem kell képezni a változó címét, közvetlen a változóra mutat rá.  Nem kell gondolkodni, hogy most a pointer címét akarjuk vagy a pointer által mutatott változót,stb…  Megszorítás: referenciát a létrehozáskor inicializálni kell! Nem lehet belőle tömböt képezni!  Referencia képzése (&): int a = 5; int& b = a;

8 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Referencia  Nagyon hasonló, mint a cím szerinti paraméter átadás.  A C++ nem tesz különbséget referencia és pointer paraméter között, ezért nem tehető meg, hogy ugyanolyan névvel létrehozunk kettő függvényt, úgy, hogy az egyik paramétere egy pointer a másiké egy referencia.

9 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Referencia  példa void ref_function( int& a ) { a++; } int main( int argc, char** argv ) { int a = 5; function( a ); std::cout << a << std::endl; }

10 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Dinamikus tömbök  Dinamikus tömböknek memóriát new-val kell lefoglalni. int* array = new int[ size ];  Saját osztálynál: OneParameter* object = new OneParameter[size];  Azonban ez csak olyan osztályoknál működik, ahol van default konstruktor.

11 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Delete[ ]  Tömböket a delete[] operátorral töröljük.  delete[] array;  delete[] object;

12 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Névterek - namespace  Egy függvény vagy osztály írásakor könnyen előfordulhat, hogy az általunk választott név ütközik egy meglévővel.  A névterek felhasználásával a különböző definíciók névhierarchiába szervezhetőek. Így akár logikai csoportosítás is elérhető.  Névterekkel tetszőleges mélységű névtér hierarchia alakítható ki.  Megkezdett névtér folytatható, akár külön másik forrás file-ban.  Azonos névtérben nem lehet két egyforma definíció (osztály, függvény, változó).

13 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Névterek - namespace  Névtér létrehozása: namespace Math { class Multiple{}; } namespace House { class Door{}; class Wall{}; }

14 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Névterek elérése  Névterek elérési útja programozható.  Névtér feloldó operátor (scope operátor) ::  Példa: std::cout  Teljes elérési útvonalat meg kell adni, ha az elérni kívánt tag több névtérbe van ágyazva: House::Room::Bed bed;

15 UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Névterek elérése  Ahhoz, hogy minden hivatkozáskor ne kelljen megadni a teljes elérési útvonalat, „használni” kell a névteret: using namespace Math; Multiple mult; using namespace House::Room; Bed beg; using namespace std;


Letölteni ppt "UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus."

Hasonló előadás


Google Hirdetések