Prog2 2. ZH kikérdező
A VIK Wikiből
Mi a tervezési minta?
- Ismétlődő kódrészlet.
- Objektumorientált programozás alapelve.
- Grafikus elem: a háttér grafikus mintázata.
- Gyakran előforduló problémák általános, újrafelhasználható megoldása.
Mi az adapter tervezési minta lényege?
- Grafikus elem: a taskbar-hoz való illesztést végzi.
- Lehetővé teszi két nem kompatibilis osztály együttműködését.
- Örökbefogadás modellezésére szolgál.
- Objektumorientált programozás alapelve.
Mi a funktor?
- Objektumorientált programozás alapelve.
- Funkcionális programozás alapelve.
- Függvényként használható objektum.
- Grafikus elem: Funkcionális tortadiagram.
Jelölje, hogy mely kijelentés(ek) igaz(ak) a C++ nyelvre!
- A sablon feldolgozása fordítási időben történik.
- A try catch blokkban deklarált objektumokat a blokk után explicit módon meg kell szüntetni.
- A destruktor mindig meghívja a közvetlen ősosztály destruktorát, ha nincs virtuális öröklés.
- Statikus tagfüggvény nem lehet inline.
Jelölje, hogy mely kijelentés(ek) igaz(ak) a C++ nyelvre!
- C++-ban lehet függvényt balértékként használni.
- Sablonnak lehet sablonparamétere is.
- Az implicit értékadó operátor nem hívja meg az ősosztály értékadó operátorát, ezért örökléskor mindig kell értékadó operátort deklarálni.
- Konstruktor nem dobhat kivételt.
Jelölje, hogy mely kijelentés(ek) igaz(ak) a C++ nyelvre!
- A dynamic_cast hiba esetén mindig kivételt dob.
- Az STL asszociatív tárolói rendezetten tárolnak.
- A const_iterator értéke megváltoztatható, csak az adat nem változtatható meg, amire az iterátor hivatkozik.
- A perzisztens objektum állapota állandó, azaz az állapota nem változtatható meg.
Jelölje, hogy mely kijelentés(ek) igaz(ak) a C++ nyelvre!
- Az adapter tervezési minta csak örökléssel valósítható meg.
- A kivételosztályokat kötelező az std::exception osztályból származtatni.
- Referencia típusú, nem statikus tagváltozó csak inicializáló listán inicializálható paraméterként átadott értékkel.
- Az objektumok szerializációját a C++ automatikusan biztosítja, csupán a Serializable osztályból kell származtatni.
Melyik állítás igaz?
- Egy osztály privát adatát közvetlenül csak a tagfüggvények érhetik el.
- Egy osztály privát adatát közvetlenül csak a tagfüggvények és a leszármazott osztályok tagfüggvényei érhetik el.
- Egy osztály privát adatát csak a leszármazott osztályok tagfüggvényei érhetik el.
- Egy osztály privát adatát közvetlenül csak a tagfüggvények és a barát függvények érhetik el.
Adott a következő deklaráció:
const char *p;
Igaz, vagy hamis?
p pointerrel elérhető memóriaterület nem változtatható meg.
- Igaz
- Hamis
Adott a következő kódrészlet:
int a1 = 1; int b1 = 2; int &tmp = a1; a1 = b1; b1= tmp;
A kódrészlet lefutása után melyik állítás helyes?
- a1 == 1 és b1 == 2
- a1 == 2 és b1 == 1
- a1 == 1 és b1 == 1
- a1 == 2 és b1 == 2
Adott a következő deklaráció:
struct A { virtual void foo() { std::cout << "A\n"; } void bar() { foo(); } }; struct B : public A { void foo() { std::cout << "B\n"; } };
Mit ír ki a következő kódrészlet?
A* pa = new B; pa->foo();
- A
- B
- A kódrészlet hibás pa változó nem kaphat értékül B objektumra mutató pointert.
Adott a következő deklaráció:
struct A { virtual void foo() { std::cout << "A\n"; } void bar() { foo(); } }; struct B : public A { void foo() { std::cout << "B\n"; } };
Mit ír ki a következő kódrészlet?
A* pa = new B; pa->A::foo();
- A
- A kódrészlet hibás pa változó nem kaphat értékül B objektumra mutató pointert.
- B
Adott a következő deklaráció:
struct A { virtual void foo() { std::cout << "A\n"; } void bar() { foo(); } }; struct B : public A { void foo() { std::cout << "B\n"; } };
Mit ír ki a következő kódrészlet?
B b; b.bar();
- A
- A kódrészlet hibás, mert a B osztálynak nincs bar() tagfüggvénye.
- B
Adott a következő deklaráció:
class A { int a; public: A() : a(0) {} // 4. sor int &inc() const { return a++; } // 5. sor };
Melyik állítás igaz?
- A 4. sor hibás, mert inicializáló listán csak objektum szerepelhet. Az a adattag pedig nem objektum.
- Az 5. sor hibás, mert privát adat referenciáját nem lehet képezni.
- Az 5. sor hibás, mert konstans tagfüggvény nem módosíthatja az objektum állapotát.
- Az 5. sor hibás, mert nem lehet referencia típusú konstans függvény.
C++ nyelvben a konstruktor lehet:
- statikus konstruktor
- paraméter nélkül hívható, vagy default konstruktor
- egy vagy több paraméterrel hívható konstruktor
- konstans konstruktor
- virtuális konstruktor
- értékadó konstruktor
- másoló konstruktor
- funkcionális konstruktor