2006
Zapisz deklarację pola int x w klasie K tak, aby nie było wspólne dla obiektów tej klasy (!). [0-2]
I-26
__________________________________________________ ____________
class K {
CZ13K2
Imię i Nazwisko
Nr albumu
/[52]
public:
Przedstaw kod funkcji double f() rozwiązującej zadanie: „Cegła waży kilo i pół cegły. Ile waży cegła?” [0-4]
………………………………………………………………
};
Pewną klasę zdefiniowano następująco: class A { public: A() { cout<<”A”; } ~A() { cout << "~A”; } }; i wykonano poniższy fragment kodu. Jakie wyniki zostaną wyświetlone? [0-4]
Utwórz klasę pochodną klasy class X {} i nazwij ją Y. [0-2]
{ A o1; }
A * o2 = new A();
Odp.: _____________________________________________________
delete o2;
Dana jest klasa: class X {public: void m(); } Podaj przykład przesłonięcia i przeciążenia metody m() w pochodnej klasie o nazwie Y. [0-4]
Dane są klasy: class A { public: void m(); }; oraz class B : public A { public: virtual void m(); }; Utworzono Przesłonięcie
Przeciążenie (przeładowanie)
obiekt A *o = new B(); Czy wywołanie o->m(); wywoła metodę z klasy A czy z klasy B? [0-2]
Odp.: ________________
Pewną klasę zdefiniowano następująco: class A { public: int x; }; i wykonano poniższy fragment kodu.
W pewnej klasie K umieszono pole int x w sekcji ‘private:’. Pole to: [0-2]
Jakie wyniki zostaną wyświetlone? [0-2]
a) jest widoczne tylko w obrębie klasy K
A o1, o2;
b) jest widoczne tylko w obrębie klasy K oraz klas pochodnych o1.x = 1; o2.x = 2;
c) jest widoczne tylko w obrębie klasy K i klas zaprzyjaźnionych cout << o1.x << o2.x;
Uzupełnij poniższy kod tak, aby klasa Test była abstrakcyjna (uwaga!) [0-2]
Polimorfizm to pojęcie oznaczające: [0-2]
class Test {
a) wykonanie metod z klasy ustalonej na podstawie wykonanego konstruktora b) wykonanie metod obiektu z klasy zgodnej z typem wskaźnika na obiekt
};
c) nazwę greckiej tragedii
Jest dana pewna klasa K zawierająca pole int x. Uzupełnij lub popraw kod w taki sposób, aby było poprawnie inicjalizowane pole x: [0-2]
Dana jest definicja klasy A. Które z ciał metod m() i ms() są właściwe (T) (sensowne, dozwolone, nie K( int x ) { x = x; }
spowodują błędów w kompilacji kodu), a które nieprawidłowe (N)? [0-6]
template <class Typ>
Które przypadki kodu zadziałają prawidłowo (naprawdę zwrócą a) m() { ms(); s = 7; } T / N
class A {
Typ max(Typ a, Typ b)
wartość minimalną)? [0-2]
b) m() { p = 9; } T / N
public:
{
a) max(‘x’, ‘X’);
c) m() { p = 7; ms(); } T / N
static void ms() { … }
return a < b ? a : b
b) max("abc", "ABC");
d) ms() { m(); s = 7; } T / N
void m() { …}
;
c) max(0x378, 0x37A);
e) ms() { s = 7; } T / N
static int s;
}
d) max(-1, 0)
f) ms() { p = 9; m(); } T / N
int p; };
Ile konstruktorów może zawierać klasa w języku C++? [0-2]
Wyjątek to: [0-2]
a) dowolną liczbę b) tyle, ile destruktorów c) jeden d) żadnego a) inne zachowanie programu niż to przewidział programista, b)
class A {
class B : public A {
void main() {
przekazanie sterowania do innego miejsca kodu niż to wynika z typowego wykonania programu, c)
public:
public:
A* o = new B();
sytuacja w programie, która wymaga podjęcia szczególnych kroków.
Jak zadziała poniższy kod? Co wyświetli? [0-2]
A() { cout << "A "; }
B() { cout << "B "; }
o->m();
int f(int x) { if(x>0) return x; else throw "Wyjątek"; }
~B() { cout << "~B "; }
delete o;
void main() {
};
void m() { cout << "mB "; }
}
try { cout << f(0); cout << f(1); }
};
catch (int w) { cout << "W1"; }
Wpisz wyniki dla różnych wariantów (virtual/brak virtual). [0-8] przykład: A B mA mB ~B ~A catch (char * w) { cout << "W2"; }
~A() {…}
virtual ~A() {…}
~A() {…}
virtual ~A() {…}
} }
Zaznacz cechy charakterystyczne dla strukturalnego stylu programowania: [0-2]
void m() {…}
void m() {…}
virtual void m() {…}
virtual void m() {…}
a)
używanie wcięć i formatowania tekstu dla zwiększenia czytelności kodu źródłowego, b)
podział programu na mniejsze, niezależne od fragmenty ze zdefiniowanym interfejsem, c) stosowanie wyłącznie struktur danych struct {} zamiast typów prostych.