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

Microsoft

Continue with Microsoft

or continue with

Facebook

Facebook

Apple

Apple

Others

Others

Already have an account?