PA2 - 3 - Konstruktory, destruktory

PA2 - 3 - Konstruktory, destruktory

University

8 Qs

quiz-placeholder

Similar activities

Programování - opakování

Programování - opakování

University

8 Qs

PRP_CV06

PRP_CV06

University

8 Qs

ICT General Knowledge Quiz

ICT General Knowledge Quiz

3rd Grade - Professional Development

10 Qs

C Programming Quiz-5

C Programming Quiz-5

University

10 Qs

UTILITY PROGRAM

UTILITY PROGRAM

University

10 Qs

PA2 - 2 - OOP a metody

PA2 - 2 - OOP a metody

University

8 Qs

Kvíz o Pythone

Kvíz o Pythone

11th Grade - University

8 Qs

PA2 - 1 - Přetěžování, reference, const

PA2 - 1 - Přetěžování, reference, const

University

7 Qs

PA2 - 3 - Konstruktory, destruktory

PA2 - 3 - Konstruktory, destruktory

Assessment

Quiz

Computers

University

Hard

Created by

Jan Matoušek

Used 2+ times

FREE Resource

8 questions

Show all answers

1.

MULTIPLE CHOICE QUESTION

45 sec • 1 pt

Media Image

Co vypíše následující program?

A

B

B

A

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Konstruktory se volají v pořadí definice proměnných.

Platí to:

- ve struktuře / třídě

- u lokálních proměnných v bloku kódu

- u globálních/statických proměnných v rámci jedné překladové jednotky.

Nelze zaručit vzájemné pořadí z různých překladových jednotek.

2.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

A

B

AB

AB

A

B

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Konstruktory se volají v pořadí definic proměnných a struktur/tříd.

Ale! Definice není hotová, dokud neskončí středníkem (nebo čárkou u proměnných).

Zde tedy je hotová nejprve

- definice a,

- definice b,

- definice struktury AB.

A má to důsledky...

3.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

~A

~B

~AB

~AB

~A

~B

~B

~A

~AB

~AB

~B

~A

Answer explanation

Media Image

Destruktory se volají v přesně opačném pořadí než konstruktory.

Můžete si představit, že se při vzniku proměnných pokládají na fiktivní (*) zásobník jejich rodné listy (konstruktory) a při jejich odchodu se ze zásobníku čtou závěti (destruktory).

*) nikoliv reálný; pořadí volání určí kompilátor přímo

4.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

42

0

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Vlastní definice jakéhokoliv konstruktoru zruší deklaraci výchozího konstruktoru dodanou kompilátorem i céčkovou inicializaci po prvcích X x = { 1, 2, ... }; (*)

Konstruktor A() tedy neexistuje.

*) Zápis A a = { 1, 2 }; bude volat konstruktor A::A(int, int).

5.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

42

0

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Respektujeme pořadí volání konstruktorů, během zpracování A::A(42) přiřadíme do m_A hodnotu 42.

Poté, co je instance A vytvořena, hodnotu m_A (42) vypíšu.

6.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

42

0

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Respektujeme pořadí volání konstruktorů. Nejprve se tedy zkonstruuje reference m_A.

Jenže...

Reference NEMÁ výchozí konstruktor!

Tedy už 2. krok selže!

Pozdější přiřazení už pracuje s existující referencí, skrz kterou přiřadí hodnotu z dodané reference a.

7.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

42

0

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Member initializer list nám umožňuje říct, jaké konstruktory (a s jakými parametry) členských proměnných se budou volat.

Toto už bude fungovat správně, protože konstruktor reference z jiné reference existuje. (2. krok)

Konstruktory lze takto i delegovat, tedy za : volat jiný svůj konstruktor.

8.

MULTIPLE CHOICE QUESTION

30 sec • 1 pt

Media Image

Co vypíše následující program?

42

0

Výstup není definován

Program nepůjde zkompilovat

Answer explanation

Media Image

Výchozí viditelnost členů ve třídě je private. Nastavit konstruktor jako private je jeden ze způsobů, jak si zajistit, že nepůjde vytvářet instance daného typu zvenčí.

Zajímavý je i zápis:

A() = delete;

Který daný konstruktor zruší. Toto se používá i v jiných případech, když např. chceme zablokovat kopie (viz 5. cviko)