100 likes | 243 Views
Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október. C++ programozási nyelv Gyakorlat - 5. hét. Tartalomjegyzék. Függvénynevek túlterhelése A függvények szignatúrája (aláírása) Szignatúra és túlterhelés Paraméterátadás (parameteratadas.dsw)
E N D
Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október C++ programozási nyelvGyakorlat - 5. hét
Tartalomjegyzék • Függvénynevek túlterhelése • A függvények szignatúrája (aláírása) • Szignatúra és túlterhelés • Paraméterátadás (parameteratadas.dsw) • Változók hatóköre • Globális változók • Osztályszintű adattagok • Public és private hozzáférési módok
Függvénynevek túlterhelése • Nem felüldefiniálás, hanem túlterhelés • felüldefiniálásról majd a leszármazott osztályoknál fogunk beszélni • Általában különböző feladatokat ellátó függvényeknek eltérő neveket adunk. • Mi történjen akkor, ha több függvény ugyanazt a feladatot látja el kis eltéréssel. Például azonos műveletet lát el különböző típusú adatokon. • C-ben: int IntHasonlit(int Par1, int Par2); int DblHasonlit(double Par1, double Par2); • C++-ban: int Hasonlit(int Par1, int Par2); int Hasonlit(double Par1, double Par2);
A függvények szignatúrája (aláírása) • A függvények szignatúrája (aláírása) • C esetében: • a függvény neve • C++ esetében: • a függvény neve • a függvény paramétereinek száma • a függvény paramétereinek típusa • A függvény visszatérési értéke nem része a szignatúrának!!! • Miért?
Szignatúra és túlterhelés • Ha a szignatúrát tekintjük a függvény azonosítójának, akkor a túlterhelés nem jelent semmi különlegeset. • Azonos névtérben nem lehet két azonos szignatúrájú függvény • C esetében nem lehet két azonos nevű függvény • C++ esetében elég, ha a paraméterlistájukban eltérnek. • Hol láttuk ezt a jelenséget az elmúlt hetekben? • Konstruktorok túlterhelése • Lehet-e túlterhelni a destruktorokat? Miért?
Paraméterátadás (parameteratadas.dsw) • Nézzük meg a példát! • Mit fog kiírni? • Mi a különbség a kétféle paraméterátadási mód között? • érték szerint • referencia szerint • Mikor használjuk a referencia szerint paraméterátadást? • azt akarjuk, hogy a függvény módosítsa az értékét • veszélyes, kerülendő • nagy méretű paraméterek esetén • hely és idő takarékosság céljából • írhatunk elé const-ot, akkor nem módosítható • void fv( const NagyOsztaly& par );
Változók hatóköre • Deklarálunk egy változót • Mi a hatóköre ennek a változónak? • A deklaráció pontjától • A deklarációt tartalmazó blokk végéig • ha minden blokkon kívül deklarálunk egy változót, akkor a fájl végéig (globális változó) • Példák • Mi történik akkor, ha két azonos nevű változó hatóköre átfedi egymást? • Példák
Globális változók • Mit nevezünk globális változónak? • Hol látszik egy globális változó? • Miért veszélyes ez? • Mikor használnánk mégis globális változót? • egy függvény két lefutása között is megmarad • Helyette használhatunk static változót • Példa static változóra
Osztályszintű adattagok • Az osztályhoz tartozik, nem a példányokhoz • Csak egy példányban létezik, minden példányból ugyanazt érjük el • Példányok létrejötte előtt is létezik • Példa: osztalytag.dsw • Példa: osztalytag2.dsw
Public és private hozzáférési módok • Ismétlés • Példák