Search Header Logo

PA2 - 3 - Konstruktory, destruktory

Authored by Jan Matoušek

Computers

University

Used 2+ times

PA2 - 3 - Konstruktory, destruktory
AI

AI Actions

Add similar questions

Adjust reading levels

Convert to real-world scenario

Translate activity

More...

    Content View

    Student View

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.

Access all questions and much more by creating a free account

Create resources

Host any resource

Get auto-graded reports

Google

Continue with Google

Email

Continue with Email

Classlink

Continue with Classlink

Clever

Continue with Clever

or continue with

Microsoft

Microsoft

Apple

Apple

Others

Others

Already have an account?