wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

natív

Total questions: 89

Worksheet time: 1hrs 7mins

Name
Class
Date
1.

1. Mi igaz a friend osztályokra?

a)

A friend osztályok hozzáférhetnek az osztály protected és private tagjaihoz is.

b)

Csak olyan osztály lehet friend, amelyik már korábban definiálva volt.

c)

Csak függvényeket definiálhatunk friend-nek.

d)

A friend reláció kétirányú, azaz ilyenkor az osztályok kölcsönösen hozzáférnek egymás nem publikus tagjaihoz.

2.

Miért fontos a dinamikus memória felszabadítása C++-ban?

a)

A felszabadított memória újra használhatóvá válik a program számára.

b)

Elkerüljük a memóriaszivárgást, amely a memória kifogyásához vezethet.

c)

Nem kell felszabadítani, mert a dinamikusan foglalt memória automatikusan felszabadul a program végén.

d)

Nem fontos, a szemétgyűjtő automatikusan felszabadítja.

3.

Mikor kell a másoló konstruktort és az értékadó operátort megvalósítani?

a)

Akkor, ha az objektum olyan erőforrást használ (pl. dinamikusan foglalt memóriát), aminek a másolásáról nekünk kell gondoskodni

b)

Csak akkor kell megvalósítani, ha a láthatóságukat akarjuk csökkenteni vagy meg akarjuk tiltani a másolást

c)

Nem szükséges, a fordító mindkettőt legenerálja, és azok minden esetben megfelelően működnek

d)

Akkor kell, ha tudjuk előre, hogy az objektumokat majd másolni fogjuk

4.

Mi történik, ha egy olyan osztálynak nem valósítjuk meg a másolását, amelyiknek van egy vector adattagja, ami pointereket tárol?

a)

Lehetnek olyan esetek, amikor nem szükséges a másolás megvalósítása.

b)

Minden esetben rosszul fog működni a program.

c)

Legkésőbb a memória felszabadításánál megszakad a program futása és hibával kilép.

d)

Jól fog működni, a vector tudja, hogyan kell a pointer által mutatott objektumokat lemásolni.

5.

Hogyan tudok beolvasni C++-ban egy int típusú i változóba értéket a standard inputról?

a)

int &j = i; cin >> j;

b)

cin >> i;

c)

cout >> i;

d)

cin >> &i;

6.

Mi a kivételkezelés célja C++-ban?

a)

Különválasztja a hibakezelést a tényleges kódtól, így átláthatóbbá teszi a programot.

b)

Lehetővé teszi, hogy a program futása során fellépő hibákat elegánsan kezeljük.

c)

Segít abban, hogy a hibákat ott kezeljük, ahol azok megoldhatók.

d)

Kivételkezelést csak hálózati hibák esetén lehet használni.

7.

Mi a szerepe az iterátoroknak a C++-ban?

a)

Az iterátorok lehetővé teszik a tárolók elemeinek bejárását típustól függetlenül.

b)

Az iterátorok mindig visszaadják az elemek címét, de nem biztosítanak közvetlen hozzáférést.

c)

Az iterátorok használatával általános algoritmusokat írhatunk, amelyek különböző tárolókon működnek

d)

Az iterátorok segítségével típusfüggetlen tárolókat implementálhatunk.

8.

Miért kell védőfeltételeket alkalmazni a header fájlokban?

a)

Ha többször include-oljuk, akkor például típusdefiníciók vagy a globális változók fordítási hibát okoznának.

b)

Mert a többször deklarált függvények és osztályok fordítási hibát okoznának.

c)

C-ben kötelező volt, és csak a hagyomány miatt alkalmazzák C++-ban is, de nem lenne rá szükség.

d)

Magát a header fájlt védik, hogy ne include-oljon további fájlokat

9.

Melyik állítás igaz az std::map esetében?

a)

Van indexer operátora.

b)

Hatékonyan lehet benne keresni.

c)

Kulcs-érték párokat tárol.

d)

Lehet std::string a kulcs.

e)

Az érték típusra nincs semmi megkötés.

10.

Mi igaz a konstruktor inicializáló listára?

a)

Konstans adattagnak adthatunk értéket

b)

Balról jobbra lesz kiértékelve, és az értékadások is ebben a sorrendben hajtódnak végre

c)

Az ősosztály adattagjait is módosíthatjuk a leszármazott osztály konstruktor inicializáló listájában

d)

Csak ott inicializálhatjuk az osztály adattagjait

11.

C++ esetében hogyan jelezhetjük az operációs rendszer felé, hogy a program rendben lefutott?

a)

A main függvényből egy return 0;-val lépünk ki

b)

A vezérlés elhagyja a main függvényt egyetlen return utasítás nélkül

c)

A main függvény egy pozitív egész számmal tér vissza

d)

A main függvényből egy return OK;-kal lépünk ki

12.

Hogyan tudom egy osztály adattagját megváltoztatn egy const metódusban?

a)

A metódust nem csak const-nak kell deklarálni, hanem mutable-nek is.

b)

Mutable-nak kell deklarálni azokat az adattagokat, amelyeket meg akarok változtatni.

c)

Ilyet nem lehet C++-ban.

d)

Az adott adattag konstans tulajdonságát a const_cast segítéségével eltávolítom, és utána megváltoztathatom.

13.

Melyik állítás igaz egy friend függvényre?

a)

Hozzáfér az adott osztály privát tagjaihoz.

b)

Az osztály tagfüggvénye.

c)

Az egyik paramétere mindig az adott osztály típusú kell legyen.

d)

Csak operátor lehet friend.

14.

Melyikből lehet egynél több is egy osztályban?

a)

Konverziós operátor

b)

i nevű adattag

c)

! operátor

d)

Értékadó operátor

e)

Másoló konstruktor

15.

Hogyan működnek a lambda-captures C++-ban?

a)

A lambda-captures segítségével a lambda-kifejezés hozzáférhet a környező függvény változóihoz.

b)

A lambda-captures lehetővé teszi, hogy a lambda-kifejezés módosítsa a referenciaként átvett

változókat.

c)

A lambda-captures nem használható a lambda-kifejezések belső állapotának kezelésére.

d)

A lambda-captures csak a statikus változókat tudja használni.

16.

Mikor hívódik meg a destruktor automatikusan?

a)

A destruktort csak explicit módon hívhatjuk meg.

b)

Amikor a program befejeződik, és a globális objektumok megszűnnek.

c)

Amikor egy objektum kivétel dobása miatt megszűnik.

d)

Amikor a lokális objektum kilép a hatóköréből.

17.

Mi a különbség az érték szerinti és a referencia szerinti kivétel elkapása között?

a)

Az érték szerinti elkapás mindig hatékonyabb, mint a referencia szerinti.

b)

Nincs különbség a kétféle elkapás között.

c)

Az érték szerinti elkapás esetén az eredeti kivétel objektum állapota nem mindig érhető el.

d)

A referencia szerinti elkapás gyorsabb lehet, mert nem hoz létre másolatot a kivételről.

18.

Miért hasznos a noexcept C++-ban?

a)

A noexcept kötelező minden függvényben, ami nem dob kivételt.

b)

A noexcept azt jelenti, hogy a függvény automatikusan elkapja a kivételeket.

c)

A noexcept használata biztonságosabbá teheti a kódot, mivel előre jelezhetővé válik a függvény

viselkedése.

d)

A noexcept megjelöli, hogy egy függvény nem dobhat kivételt.

19.

Mi a lambda capture szerepe a lambda kifejezésekben?

a)

Csak konstans változók használhatók a lambda capture-ben.

b)

A capture által adott változók módosíthatók is, ha referencia szerint kerülnek átadásra.

c)

Rugalmasan lehetőséget biztosít a külső változók elérésére.

d)

A capture nem engedi, hogy a változókat megváltoztassuk a lambda belsejében.

20.

Ha van az osztálynak egy pointer adattagja, akkor kinek a feladata a pointer által mutatott

memóriaterület felszabadítása?

a)

Lehet olyan eset, hogy automatikusan felszabadul.

b)

Mindig az adott osztálynak kell felszabadítania.

c)

A program tervezésekor el kell dönteni, hogy ki felel a memória felszabadításáért.

d)

Előfordulhat, hogy az osztály megszűnése előtt felszabadul.

21.

Milyen feltételnek kell teljesülnie egy általunk definiált kivétel osztályra?

a)

Meg kell valósítani a publikus what() metódust

b)

Kell lennie publikus paraméter nélküli konstruktorának

c)

Tetszőleges osztályt lehet kivételként használni C++-ban

d)

Az std névtér exception osztályából kell származnia

22.

Mi lehet egy C++ program belépési pontja?

a)

public static int Main() {...}

b)

int main() {...}

c)

int main(int argc, char** argv){...}

d)

void main(int argc, char* argv[]) {...}

23.

Mely esetekben nem lehet példányosítani egy osztályt?

a)

Ha van olyan nem virtuális metódusa, amelyiket nem valósítunk meg

b)

C++-ban mindig lehet példányosítani egy osztályt

c)

Nincs egyetlen publikus konstruktora sem

d)

Van tisztán virtuális metódusa

24.

Hogy adhatom meg egy pointereket tároló set-nek, hogy mit használjon összehasonlításkor?

a)

Nem lehet megadni

b)

Egy osztály megadásával amelyik definiálja a < operátort

c)

Megadhatunk egy függvényt, ami bool típussal tér vissza és két paramétere van (olyan típusúak, amit a set tárol)

d)

Definiálunk egy globális < operátort két pointer típussal

25.

Melyik utasítás okoz biztosan fordítási hibát egy const metódusban, ha i int típusú?

a)

i = 5;

b)

return *this;

c)

i++;

d)

this->i = 5;

e)

++*this;

26.

Melyik állítás igaz az std::vector esetében?

a)

Csak végére lehet beszúrni új elemet.

b)

Tetszőleges elemet képes tárolni.

c)

Rendezve tárolja az elemeket.

d)

Van indexer operátora.

e)

Csak iterátorral lehet bejárni.

27.

Hogyan tudom egy osztály adattagját megváltoztatni egy const metódusban?

a)

A metódust nem csak const-nak kell deklarálni, hanem mutable-nek is.

b)

Mutable-nak kell deklarálni azokat az adattagokat, amelyeket meg akarok változtatni.

c)

Ilyet nem lehet C++-ban.

d)

Az adott adattag konstans tulajdonságát a const_cast segítségével eltávolítom, és utána megváltoztathatom.

28.

Az alábbi állítások közül melyik igaz a pointerre?

a)

A pointernek létrehozásakor értéket kell adni

b)

Egy memóriaterületre csak egy poninter mutathat

c)

Pointerek csak C-ben voltak, C++-ban referenciát kell használni

d)

A pointer nem közvetlenül tárolja a "hasznos adatot", hanem arra a területre mutat, ahol ez tárolódik

29.

Mi történik, ha egy kivételt nem kapunk el C++-ban?

a)

A kezeletlen kivételek futás közben az std::terminate() függvényt hívják meg, amely leállítja a programot.

b)

A program tovább fut, mintha nem történt volna kivétel.

c)

Ha egy kivételt nem kapunk el, a program futása megszakad.

d)

A kivételkezelő rendszer automatikusan keres egy megfelelő catch blokkot a hívási láncban.

30.

Mi igaz a delegating konstruktorra?

a)

A C++ nem támogatja ezt

b)

A hívó és a hívott konstruktorok paraméter számának meg kell egyeznie

c)

Ugyanazon osztály egy másik konstruktorának inicializáló listájából hívható

d)

Olyan speciális konstruktor, amit az osztályon kívülről nem lehet hívni

31.

Mi a hasonlóság a másoló konstruktor és az értékadó operátor között?

a)

Minkettőt az objektum létrehozásakor használjuk

b)

Mindkettő az objektum másolását végzi

c)

Egy osztálynak csak egy másoló konstruktora és egy értékadó operátora lehet

d)

A kettő ugyanaz, csak a nevük tér el

32.

Melyik állítás igaz a másoló konstruktorra?

a)

Ha implementáljuk, akkor az objektum másolása előtt fel kell szabadítani a már lefoglalt memóriát.

b)

Ha a másoló konstruktort megvalósítjuk, akkor ajánlott az értékadó operátort is megvalósítani.

c)

Egy osztálynak csak egy másoló konstruktora lehet.

d)

A fordító generál egy másoló konstruktort, ha nem implementáljuk.

33.

Miért fontos a dinamikus memória felszabadítása C++-ban?

a)

Nem kell felszabadítani, mert a dinamikusan foglalt memória automatikusan felszabadul a program végén.

b)

A felszabadított memória újra használhatóvá válik a program számára.

c)

Elkerüljük a memóriaszivárgást, amely a memória kifogyásához vezethet.

d)

Nem fontos, a szemétgyűjtő automatikusan felszabadítja.

34.

Mi igaz a destruktorra?

a)

Csak egy lehet belőle.

b)

Ha nem valósítjuk meg, akkor a fordító legenerálja.

c)

Csak itt szabadíthatjuk fel az osztály által lefoglalt memóriát.

d)

Lehet virtuális vagy konstans is.

35.

Mit nem lehet megváltoztatni az operátor-kiterjesztés esetében?

a)

A paraméterek számát

b)

Az operátor nevét

c)

A visszatérés típusát

d)

Az operátor prioritását

36.

Hogyan dobunk kivételt C++-ban?

a)

Kivételként bármilyen típusú objektumot dobhatunk, de ajánlott kivétel osztályokat használni.

b)

A throw kulcsszóval lehet kivételt dobni.

c)

A throw automatikusan megoldja a hibát, ha kivételt dob.

d)

Csak primitív típusokat, például int vagy char lehet kivételként dobni.

37.

Mi a kivételkezelés célja C++-ban?

a)

Segít abban, hogy a hibákat ott kezeljük, ahol azok megoldhatók.

b)

Lehetővé teszi, hogy a program futása során fellépő hibákat elegánsan kezeljük.

c)

Kivételkezelést csak hálózati hibák esetén lehet használni.

d)

Különválasztja a hibakezelést a tényleges kódtól, így átláthatóbbá teszi a programot.

38.

Miért hasznos a noexcept C++-ban?

a)

A noexcept azt jelenti, hogy a függvény automatikusan elkapja a kivételeket.

b)

A noexcept használata biztonságosabbá teheti a kódot, mivel előre jelezhetővé válik a függvény viselkedése.

c)

A noexcept kötelező minden függvényben, ami nem dob kivételt.

d)

A noexcept megjelöli, hogy egy függvény nem dobhat kivételt.

39.

Mit csinál a for_each algoritmus C++-ban?

a)

A for_each mindig megszakítja a végrehajtást, ha egy feltétel nem teljesül

b)

A for_each csak arra szolgál, hogy elemeket töröljünk egy tárolóból

c)

A for_each automatikusan rendez egy tárolót

d)

A for_each végigiterál egy tároló elemein és mindegyikre végrehajt egy adott műveletet

40.

Melyik állítás igaz a C++-os kivételkezelésre?

a)

A catch ( ... ) tetszőleges kivételt elkap

b)

Egy elkapott kivételt a throw; utasítás segítségével eldobhatunk

c)

A finally minden esetben lefut egy try blokk után

d)

A kivételt mindig referencia szerint kell elkapni

41.

Mire jó a using namespace std; ?

a)

Ilyenkor nem kell include-olni az iostream, hogy hasznalhassuk a cin-t es a cout-ot

b)

Enélkül nem tudnánk használni a cout-ot

c)

A fordító a többi scope mellett az std névtérben is keres majd, amikor névfeloldást végez

d)

Így definiálom az std névteret

42.

Miért használunk másoló konstruktort C++-ban?

a)

Segít a mély másolat készítésében, ha az objektum dinamikusan foglalt memóriát használ.

b)

Automatikusan meghívódik, amikor egy objektumot érték szerint adunk át egy függvénynek.

c)

A fordító (általában) generál egy alapértelmezett másoló konstruktort, ha nem definiálunk sajátot.

d)

A másoló konstruktor törli a dinamikus memóriát az eredeti objektumból.

43.

Mit jelent a rövidített kiértékelés az operátorok esetében?

a)

Azt, hogy ha egy logikai kifejezés kiértékelésekor valamelyik részkifejezés alapján egyértelműen el lehet dönteni a kifejezés értékét, akkor a kifejezés többi része nem lesz kiértékelve

b)

A logikai kifejezés kiértékelése során csak addig lesznek kiértékelve a részkifejezések, amíg el nem lehet dönteni az egész kifejezés igazságtartalmát

c)

A szabvány ajánlása, hogy a fordító olyan sorrendben értékelje ki a kifejezést, hogy az várhatóan

optimális legyen

d)

A fordító optimalizációja, hogy a hosszú kifejezéseket mindig rövide értékelje ki

44.

Miért fontos a dinamikus memória felszabadítása C++-ban?

a)

Nem fontos, a szemétgyűjtő automatikusan felszabadítja.

b)

A felszabadított memória újra használhatóvá válik a program számára.

c)

Elkerüljük a memóriaszivárgást, amely a memória kifogyásához vezethet.

d)

Nem kell felszabadítani, mert a dinamikusan foglalt memória automatikusan felszabadul a program végén.

45.

Melyik esetben jön létre egy példány az Example osztályból (azaz Example típusú objektum)? (class Example {/ ... /};)

a)

throw Exception();

b)

Example e3();

c)

Example &e5 = ee; // ahol ee Example tipus objektum

d)

Example e2 =(Example)malloc(sizeof(Example));

46.

Mi a lambda capture szerepe a lambda kifejezésekben?

a)

A capture nem engedi, hogy a változókat megváltoztassuk a lambda belsejében.

b)

Rugalmasan lehetőséget biztosít a külső változók elérésére.

c)

Csak konstans változók használhatók a lambda capture-ben.

d)

A capture által adott változók módosíthatók is, ha referencia szerint kerülnek átadásra.

47.

Mi igaz a konstruktor inicializáló listára?

a)

Az ősosztály adattagjait is módosíthatjuk a leszármazott osztály konstruktor inicializáló listájába

b)

Konstans adattagnak adthatunk értéket

c)

Balról jobbra lesz kiértékelve, és az értékadások is ebben a sorrendben hajtódnak végre

d)

Csak ott inicializálhatjuk az osztály adattagjait

48.

Melyik állítás igaz a destruktorra?

a)

Felszabadítja az objektum által használt erőforrásokat.

b)

Nem lehet paramétere.

c)

A destruktor neve megegyezik az osztály nevével, előtte egy tilde jellel.

d)

Meghívhatom a destruktort.

49.

Mi a hasonlóság a másoló konstruktor és az értékadó operátor között?

a)

A kettő ugyanaz, csak a nevük tér el

b)

Minkettőt az objektum létrehozásakor használjuk

c)

Egy osztálynak csak egy másoló konstruktora és egy értékadó operátora lehet

d)

Mindkettő az objektum másolását végzi

50.

Mikor kapunk fordítási hibát, ha a final módosítót alkalmazzuk egy metódusra?

a)

Ha a metódus nem virtuális

b)

Ha a metodus nem definial felul egy orokolt metodust

c)

Ha a metodus statikus

d)

A final-t csak osztályra lehet alkalmazni

51.

Mi a szerepe az iterátoroknak a C++-ban?

a)

Az iterátorok segítségével típusfüggetlen tárolókat implementálhatunk.

b)

Az iterátorok mindig visszaadják az elemek címét, de nem biztosítanak közvetlen hozzáférést.

c)

Az iterátorok lehetővé teszik a tárolók elemeinek bejárását típustól függetlenül.

d)

Az iterátorok használatával általános algoritmusokat írhatunk, amelyek különböző tárolókon működnek.

52.

Miert hasznos a noexcept C++-ban?

a)

A noexcept kötelező minden függvényben, ami nem dob kivételt.

b)

A noexcept megjelöli, hogy egy függvény nem dobhat kivételt.

c)

A noexcept használata biztonságosabbá teheti a kódot, mivel előre jelezhetővé válik a függvény viselkedése.

d)

A noexcept azt jelenti, hogy a függvény automatikusan elkapja a kivételeket.

53.

Melyik állítás igaz a C++-os kivételkezelésre?

a)

A catch (...) tetszőleges kivételt elkap

b)

Egy elkapott kivételt a throw; utasítás segítségével eldobhatunk

c)

A finally minden esetben lefut egy try blokk után

d)

A kivételt mindig referencia szerint kell elkapni

54.

Mi a különbség a statikus és dinamikus kötés között?

a)

A statikus kötés fordítási időben, míg a dinamikus kötés futásidőben dől el.

b)

A statikus kötés esetén a fordító az objektum statikus típusa alapján dönt, melyik metódust hívja meg.

c)

A dinamikus kötéshez a metódusokat virtuálissá kell tenni, hogy futásidőben a leszármazott osztály metódusa hívódjon meg.

d)

Egy osztálynak nem lehetnek egyszerre statikus és dinamikus kötéssel hívható metódusai.

55.

Milyen módon lehet inicializálni az osztály adattagjait?

a)

Konstruktor inicializáló lista használatával.

b)

Lehet alapértelmezett értéket adni az adattagnak.

c)

Delegating konstruktor segítségével.

d)

Setter metódusok meghívásával.

56.

Melyik állítás igaz a protected tagokra?

a)

A leszármazott osztályban is mindig protected lesz.

b)

A konstruktor lehet protected láthatóságú.

c)

A getter és setter metódusok láthatósága lehet protected

d)

Csak az adott osztály fér hozzá.

e)

A destruktor lehet protected láthatóságú.

57.

Az alábbiak közül melyik nem specifikált viselkedés?

a)

Függvényhívás esetén a paraméterlista kiértékelési sorrendje.

b)

Tömb túlindexelés.

c)

"return 0;" elhagyása a main függvényből.

d)

nullptr dereferencia.

e)

Nem inicializált változó használata.

58.

Mi igaz a konstruktor inicializáló listára?

a)

Az ősosztály adattagjait is módosíthatjuk a leszármazott osztály konstruktor inicializáló listájában

b)

Csak ott inicializálhatjuk az osztály adattagjait

c)

Konstans adattagnak adhatunk értéket

d)

Balról jobbra lesz kiértékelve, és az értékadások is ebben a sorrendben hajtódnak végre

59.

Mely esetekben nem lehet példányosítani egy osztályt?

a)

Ha van olyan nem virtuális metódusa, amelyiket nem valósítottunk meg

b)

C++-ban mindig lehet példányosítani egy osztályt

c)

Van tisztán virtuális metódusa

d)

Nincs egyetlen publikus konstruktora sem

60.

C++ esetében hogyan jelezhetjük az operációs rendszer felé, hogy a program rendben lefutott?

a)

A main függvényből egy return 0;-val lépünk ki

b)

A main függvény egy pozitív egész számmal tér vissza

c)

A vezérlés elhagyja a main függvényt egyetlen return utasítás nélkül

d)

A main függvényből egy return OK;-kal lépünk ki

61.

Milyen esetekben használhatjuk a const_cast operátort?

a)

Ha el akarjuk távolítani a const módosítót egy változóból.

b)

Használható érték típusok, például int esetén.

c)

Például egy const char* típusú mutatót char* típusra konvertálhatunk.

d)

A const_cast minden esetben biztonságos, bármikor eltávolíthatjuk a const-ot bármiről.

e)

Hasznos lehet függvényekben, ha const típusú paramétert kell módosítani.

62.

Mi a különbség a static_cast és a dynamic_cast között?

a)

A dynamic_cast ellenőrzi, hogy a konverzió helyes-e, és null pointerrel tér vissza sikertelenség esetén.

b)

A dynamic_cast csak polimorf osztályok között használható.

c)

A static_cast fordítási időben történik, míg a dynamic_cast futásidőben.

d)

A nem használható alap típusok között.

e)

A static_cast használatához RTTI-re van szükségünk.

63.

Mi a különbség az érték és a referencia szerinti paraméterátadás között?

a)

A referencia szerinti átadás csak primitív típusokra érvényes.

b)

Az érték szerinti átadásnál mindig az eredeti objektumot módosítjuk.

c)

A referencia szerinti átadásnál az eredeti objektumot módosíthatjuk.

d)

A referencia szerinti átadás gyorsabb lehet nagy objektumok esetén.

64.

Az alábbi állítások közül melyik igaz a pointerre?

a)

A pointernek létrehozáskor értéket kell adni

b)

Pointerek csak C-ben voltak, C++-ban referenciát kell használni

c)

Egy memóriaterületre csak egy pointer mutathat

d)

A pointer nem közvetlenül tárolja a "hasznos adatot", hanem arra a terület mutat, ahol ez tárolódik

65.

C++-ban mi a különbség a class és a struct között?

a)

Nincs különbség, teljesen ugyanazt jelentik

b)

Az alapértelmezett láthatóság a class esetében private, míg a struct esetében public

c)

Hasonló a kettő, de a struct-ból nem lehet örökölni

d)

A struct az a C-s struktúra, míg a class az a C++-os osztály

66.

Melyik nem egy C++ tároló az STL-ben?

a)

set

b)

List

c)

map

d)

vector

e)

HashMap

67.

Mikor kell a másoló konstruktort és az értékadó operátort megvalósítani?

a)

Akkor, ha az objektum olyan erőforrást használ (pl. dinamikusan foglalt memóriát), aminek a másolásáról nekünk kell gondoskodni

b)

Nem szükséges, a fordító mindkettőt legenerálja, és azok minden esetben megfelelően működnek

c)

Akkor kell, ha tudjuk előre, hogy az objektumokat majd másolni fogjuk

d)

Csak akkor kell megvalósítani, ha a láthatóságukat akarjuk csökkenteni vagy meg akarjuk tiltani a másolást

68.

Melyikből lehet egynél több is egy osztályban?

a)

! operátor

b)

Másoló konstruktor

c)

Értékadó operátor

d)

i nevű adattag

e)

Konverziós operátor

69.

Melyik esetben jön létre egy példány az Example osztályból (azaz Example típusú objektum)? (class Example {/* ... */};)

a)

throw Exception();

b)

Example &e5 = ee; // ahol ee Example tipus objektum

c)

Example e2 = (Example)malloc(sizeof(Example)

d)

Example e3();

70.

Mit jelent az, hogy egy metódus statikus?

a)

Az osztály példányosítása nélküli is hívható.

b)

Csak az adott osztály statikus metódusait hívhatja közvetlenül.

c)

Használhatja a this pointert.

d)

Lehet const.

e)

Statikus meódusban nem lehet statikus lokális változó.

71.

Hogyan tudok beolvasni C++-ban egy int típúsú i változóba értéket a standard inputról?

a)

int &j = i; cin >> j;

b)

cin >> i;

c)

cout >> i;

d)

cin >> &i;

72.

Mi történik, ha egy osztályban nem definiálunk konstruktort?

a)

Az osztály minden adattagja automatikusan inicializálódik nullával.

b)

Ha van nem triviálisan inicializálható adattag, a fordító nem generál konstruktort.

c)

Az osztály nem fordul le.

d)

A fordító generál konstruktorokat a megfelelő paraméterrel.

73.

Melyik igaz a virtualis metódusokra?

a)

Virtuális metódusok esetén a C++ futásidőben dönti el, melyik metódust hívja meg.

b)

A konstruktor lehet virtuális.

c)

Ahogy Javaban, úgy C++-ban is minden metódus alapból virtuális.

d)

A virtual kulcsszó lehetővé teszi a dinamikus kötést, ami a polimorfizmus alapja.

74.

Miért hasznos az explicit típuskonverzió?

a)

Mindig biztonságosabb, mint az implicit konverzió.

b)

Lehetővé teszi, hogy a programozó specifikálja a típusváltás módját.

c)

Automatikusan végrehajtódik futásidőben.

d)

Megelőzi az automatikus típuskonverzió által okozott hibákat.

e)

Használható bármilyen kompatibilis vagy nem kompatibilis típus között.

75.

Mi igaz az implicit típuskonverzióra?

a)

Nem igényel explicit utasítást a programozótól.

b)

Kockázatot jelenthet, ha értékvesztéssel jár (pl. double-ról int-re konvertálunk).

c)

Csak osztályok esetében használható.

d)

Például egy int változót double típusra konvertál.

e)

Elvégezheti az alapértelmezett típus-promóciót, mint például short típusról int-re.

76.

Mi igaz a class Example{}; osztály konstruktorára?

a)

A neve csak Example lehet

b)

Csak publikus lehet a láthatósága

c)

Csak egy másoló konstruktora lehet, amit Example (const Example&){/*.....*/} módon kell megadni

d)

A fordító minden esetben generál egy konstruktort

77.

Hogyan működik a set elemeinek rendezése?

a)

A rendezéshez a set a < operátort használja.

b)

A set használhat egyedi összehasonlító függvényt a rendezéshez.

c)

A set == operátor segítségével dönti el, hogy két elem egyenlő vagy sem

d)

A set elemei alapértelmezés szerint növekvő sorrendben vannak rendezve.

78.

Mikor ajánlott virtuálissá tenni a destructort?

a)

Minden esetben.

b)

Akkor, ha polimorfikusan akarjuk törölni.

c)

Akkor, ha az osztályból származtatunk további osztályokat.

d)

Akkor, ha van virtuális metódusa.

79.

Mire jó a using namespace std; ?

a)

A fordító a többi scope mellett az std névtérben is keres majd, amikor névfeloldást végez

b)

Ilyenkor nem kell includeolni az iostream -et, hogy használhassuk a cin-t és a cout-ot

c)

Enélkül nem tudnánk használni a cout-ot

d)

Így definiálom az std névteret

80.

Mit nem lehet változtatni az operátor-kiterjesztés esetében?

a)

A paraméterek számát

b)

Az operátor nevét

c)

Az operátor prioritását

d)

A visszatérés típusát

81.

Milyen feltételnek kell teljesülnie egy általunk definiált kivétel osztályra?

a)

Az std névtér exception osztályából kell származnia

b)

Meg kell valósítani a publikus what() metódust

c)

Tetszőleges osztályt lehet kivételként használni C++-ban

d)

Kell lennie publikus paraméter nélküli konstruktorának

82.

Mit jelent a rövidített kiértékelés az operátorok esetében?

a)

Azt, hogy ha egy logikai kifejezés kiértékelésekor valamelyik részkifejezésalapján egyértelműen ellehet dönteni a kifejezés értékét, akkor a kifejezés többi rész nem lesz kiértékelve

b)

A szabvány ajánlása, hogy a fordító olyan sorrendben értékelje ki a kifejezést, hogy az várhatóan optimális legyen

c)

A logikai kifejezés kiértékelése során csak addig lesznek kiértékelve a részkifejezések, amíg el nem lehet dönteni az egész kifejezés igazságtartalmát

d)

A fordító optimalizációja, hogy a hosszú kifejezéseket mindig rövide értékelje ki

83.

Melyik esetben keletkezik undefined behavior C++-ban?

a)

Nem inicializált változót használunk.

b)

Ha egy függvény neve ugyanaz, mint egy változó neve.

c)

Ha egy előjeles egész túlcsordul.

d)

Ha egy tömböt túlindexelünk.

84.

Mi a különbség a new és new[] operátorok között?

a)

A new hiba esetében kivételt dob, míg a new[] nullptr-rel tér vissza

b)

Az new-val egy objektumnak foglalunk helyet, a new[] több elemnek is képes helyet foglalni

c)

Nincs különbség köztük, csak az írásmódjuk tér el

d)

A new ugyanaz mint a malloc, de a new[]-nak nincs C-s megfelelője

85.

Mikor kapunk fordítási hibát, ha a final módosítót alkalmazzuk egy metódusra?

a)

Ha a metódus nem definiál felül egy örökölt metódust

b)

A final kulcsszó Javaban van, C++-ban nincs

c)

A final-t csak osztályra lehet alkalmazni

d)

Ha a metódus nem virtuális

86.

Mi a C++ union lényege?

a)

Az union egyszerre csak egy adattagot tárol

b)

Minden adattag ugyanazon a memóriaterületen osztozik

c)

Használható olyan adatok tárolására, amelyek sose lesznek egy idejűleg hasznűlatban

d)

Az union egyszerre több adattagot is képes tárolni

e)

Az union kizárólag primitív típusokat tárolhat

87.

Mi történik akkor ha egy kivételt nem kapunk el C++-ban?

a)

Ha egy kivételt nem kapunk el a program futása megszakad

b)

A kezeletlen kivételek futás közben az std::terminate() függvényt hívják meg, amely leállítja a programot

c)

A kivételkezelő rendszer automatikusan keres egy megfelelő catch blokkot a hívási láncban

d)

A program tovább fut mintha nem történt volna kivétel

88.

Mi a különbseg a copy es a copy_if algoritmusok között?

a)

A copy minden elemet másol, míg a copy_if csak azokat az elemeket, amelyek megfelelnek egy

feltételnek.

b)

A copy_if egy predikátumot használ, amely meghatározza, hogy egy elem másolásra kerül-e.

c)

A copy a megadott intervallum összes elemét másolja, a copy_if pedig szelektíven másolja az elemeket.

d)

A copy_if automatikusan torli az elemeket, ha nem felelnek meg a feltételnek.

89.

Miért nem tárolhatók érték szerint az örökléssel létrehozott objektumok a C++ tárolókban?

a)

Mert a tárolók csak az ősosztály memóriaterületét foglalják le, így a leszármazott osztály extra adatai

elvesznek.

b)

A tároló csak az ősosztály részét másolja, a leszármazott osztály extra tulajdonságai nem kerülnek

eltárolásra.

c)

Az öröklött objektumokat referencia segítségével kell tárolni, ha az egész objektumot meg akarjuk őrizni.

d)

Akkor tárolható, ha a leszármazott osztály nem ad az ősosztályhoz plusz adattagot.