A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor október
A C++ programozási nyelvSoós Sándor 2/10 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
A C++ programozási nyelvSoós Sándor 3/10 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 C++ programozási nyelvSoós Sándor 4/10 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?
A C++ programozási nyelvSoós Sándor 5/10 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?
A C++ programozási nyelvSoós Sándor 6/10 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 );
A C++ programozási nyelvSoós Sándor 7/10 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
A C++ programozási nyelvSoós Sándor 8/10 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
A C++ programozási nyelvSoós Sándor 9/10 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
A C++ programozási nyelvSoós Sándor 10/10 Public és private hozzáférési módok ● Ismétlés ● Példák