Průběžný test z C++

Tento týden jsem psal se svými studenty teoretické testy z C++ 1, tedy z jakéhosi úvodu do programování v C++. Jednalo se o test v podstatě teoretický, který slouží jako první stupínek k získání zápočtu.

Už na začátku semestru jsem slíbil, že za tento test lze získat maximálně 2 body (na zápočet jsou v tuto chvíli potřeba 3). A myslím, že jsem byl velice mírný… nebo jste snad jiného názoru?

Převodní tabulka.
%body
100, 902
80, 701,5
60, 501
40, 300,5
20, 10, 00

Test se skládal z deseti náhodně vylosovaných otázek, na které bylo nutné odpovědět během devíti minut. Přičemž správně byla vždy jen jedna možná odpověď a záporné body jsem neuděloval (to až příště). ;)

A povolené materiály? Cokoli, kromě komunikace s jinou lidskou entitou. Překvapivě se nikdo během testu neptal ani Siri ani Iris.

A co vy? Uspěli byste v testu?

Malá ukázka…
  1. class TA {
      public: int X;
      protected: static void Y();
      private: int Z;
    }
    class TB : TA {int A;}
    
    Ve třídě TB:
    1. složky X a Y jsou chráněné, složka Z je soukromá
    2. složka X je chráněná, složky Y a Z jsou soukromé
    3. všechny složky třídy TA jsou soukromé
    4. před předkem TA musí být uveden specifikátor přístupových práv
  2. Po provedení příkazů:
    int A = 1, B = 2;
    int& C = B;
    C = A;
    A = 3;
    cout << C << ", " << B;
    
    se na obrazovku vypíše:
    1. 1, 1
    2. adresa proměnné A a hodnota 2
    3. 3, 2
    4. 1, 2
  3. Pro metody vnořené třídy vzhledem ke složkám obklopující třídy platí:
    1. nemají žádné výjimky z pravidel o přístupových právech
    2. mohou volat bez omezení všechny metody obklopující třídy
    3. mohou číst bez omezení všechny atributy obklopující třídy a volat veřejné metody obklopující třídy
    4. mají přístup ke všem složkám označeným specifikátory public a protected
  4. class TA {
      int X;
      const int Y;
      int& Z;
    public:
      TA(int& _Z) : Z(_Z), Y(10), X(Y) {}
    };
    
    Atributy třídy TA jsou inicializovány v pořadí: 
    1. Y, Z, X
    2. X, Y, Z
    3. Z, Y, X
    4. Z, X, Y
  5. Pro statický atribut třídy TA neplatí tvrzení:
    1. je společným atributem pro všechny instance třídy TA
    2. může být deklarován s modifikátorem const
    3. má ve své deklaraci specifikovanou paměťovou třídu static
    4. v programu existuje jen v případě, že existuje alespoň jedna instance třídy TA
  6. Je-li proměnná A alokována příkazem:
    int* A = new int[10];
    její dealokace se provede příkazem:
    1. delete [] A;
    2. delete A[];
    3. delete A;
    4. dealloc A [];