Test w formie fiszek egzamin, systemy operacyjne, Bazy danych, obrazy, programowanie, sieci
Ilość pytań: 156
Rozwiązywany: 4870 razy
Poziom optymalizacji, w którym kompilator będzie próbował zwiększyć wydajność kodu za cenę jego rozmiaru oraz czasu kompilacji
d) domyślny
b) Poziom trzeci (-O3)
a) Poziom 2 (-O2)
c) Poziom pierwszy (-O1) M
a) Poziom 2 (-O2)
Kompilator GCC przeprowadza najpierw:?
b) optymalizację zależną, a następnie niezależną od architektury
a) optymalizację określoną przez użytkownika, optymalizację kodu pod konkretny procesor lub nawet model procesora a potem niezależną od architektury.
c) optymalizację niezależną od architektury, a następnie zależną od architektury
d) optymalizację niezależną od architektury, a następnie,jeśli użytkownik sobie tego zażyczy, optymalizację kodu pod konkretny procesor lub nawet model procesora
d) optymalizację niezależną od architektury, a następnie,jeśli użytkownik sobie tego zażyczy, optymalizację kodu pod konkretny procesor lub nawet model procesora
1 Dany jest fragment kodu
class K {
double D;
...
};
...
int main() {
/*1*/ double K::* wd;
/*2*/ wd = & K::D;
}
Jak zareaguje kompilator języka C++ przetwarzając kod z linii oznaczonych /*1*/ i /*2*/?
a) Stwierdzi błąd składni w linii /*1*/ (niepoprawna konstrukcja).
c) Uzna obie linie za poprawne składniowo, ale zgłosi błąd związany z naruszeniem reguł dostępu
Kod jest całkowicie poprawny.
b) Stwierdzi błąd w linii /*2*/: nie można znaleźć adresu pola, bez podania instancji klasy K.
c) Uzna obie linie za poprawne składniowo, ale zgłosi błąd związany z naruszeniem reguł dostępu
Dany jest fragment kodu
class K {
public:
double D;
...
};
...
int main ( )
/*1*/ double K::* wd;
/*2*/ wd = NULL;
}
Jak zareaguje kompilator języka C++ przetwarzając kod z linii oznaczonych /*1*/ i /*2*/?
c) Uzna obie linie za poprawne składniowo, ale zgłosi błąd związany z naruszeniem reguł dostępu.
a) Kod jest całkowicie poprawny.
b) Stwierdzi błąd składni w linii /*1*/ (niepoprawna konstrukcja).
d) Zaakceptuje linię /*1*/, ale w linii /*2*/ odmów przypisania wskaźnikowi do składowej wartości NULL.
a) Kod jest całkowicie poprawny.
Dany jest fragment kodu
class K {
public :
double D;
...
};
...
int main() {
K obj;
/*1*/ double K::* wd = & K::D;
/*2*/ obj-&rt;*wd = 3.1415;
}
Czy można wykonać operację z linii oznaczonej jako /*2*/? Jeżeli tak, to jaka jest jej semantyka?
c) Wartość pola D w obiekcie obj zostanie ustawiona na 3.1415.
d) W linii /*2*/ jest błąd składni, uniemożliwiający kompilację
b) Program da się skompilować, ale operacja z linii /*1*/ uniemożliwi przejście do linii /*2*/.
a) W linii /*1*/ jest błąd składni, uniemożliwiający kompilację
d) W linii /*2*/ jest błąd składni, uniemożliwiający kompilację
Z definicją… klasy _nie_ wiąże się
c) opis interakcji obiektów danej klasy z otoczeniem, M
a) zdefiniowanie nowego typu danych,
d) definiowanie rozmiarów i wewnętrznej struktury obiektów.
określenie wartości pól statycznych,
określenie wartości pól statycznych,
Zadaniem konstruktora jest
a) przydzielenie pamięci dla obiektu,
c) zintegrowanie obiektu z wywołaniami systemu operacyjnego,
d) logiczne powiązanie metod i pól.
b) nadanie wartości polom obiektu,
b) nadanie wartości polom obiektu,
Uruchomienie destruktora na rzecz danego obiektu powoduje
b) wyczyszczenie obszaru danych zajmowanych przez ten obiekt, M
c) zwolnienie pamięci zajmowanej przez ten obiekt,
a) wykonanie procedury zdefiniowanej pod stosowną nazwą,
d) usunięcie informacji o obiekcie z globalnego rejestru obiektów.
a) wykonanie procedury zdefiniowanej pod stosowną nazwą,
Dane są następujące definicje klas i obiektu Obj:
class B {
protecetd :
Complex val;
};
class P : private B {
public :
double val;
};
P Obj;
W obiekcie Obj zmiana zawartości składowej val, odziedziczonego po klasie B (czyli będącej typu Complex) jest:
a) niemożliwa, ze względu na zakres 'protected', M
b) niemożliwa ze względu na dziedziczenie typu 'private'
c) możliwa, jeżeli tylko użyje się wartości odpowiedniego typu (czyli Complex),
d) możliwa, jeżeli użyje się operatora zakresu (tj. '::').
d) możliwa, jeżeli użyje się operatora zakresu (tj. '::').
W języku C++ dziedzicznie _nie_ obejmuje
d) wszystkich wymienionych w punktach a-c.
a) składowych niestatycznych,
b) składowych o zakresie dostępności 'private',
operatora przypisania,
operatora przypisania,
Niech klasa K dziedziczy po klasie SuperK, a Obj jest obiektem typu K. Wywołanie destruktora obiektu Obj w pierwszej kolejnoĹ›ci wykona:
c) wywołanie poszczególnych destruktorów dla niestatycznych składowych własnych (nieodziedziczonych),
d) wywołanie poszczególnych destruktorów dla statycznych składowych własnych (nieodziedziczonych).
a) zwolnienie pamięci,
b) wywołanie destruktorów dla poszczególnych składowych odziedziczonych po klasie SuperK,
c) wywołanie poszczególnych destruktorów dla niestatycznych składowych własnych (nieodziedziczonych),
Dane są deklaracje metod klasy K. Która z nich jest konstruktorem konwertującym?
d) float operator();
a) K( const K & );
c) K( );
b) K( int, float = 0);
b) K( int, float = 0);
Który z poniższych konstruktorów _nie_ jest konstruktorem konwertującym?
d) L( int = 0, int = 0 );
c) K( );
b) J( int, float = 0);
a) I( float );
c) K( );
Potrzebna jest konwersja z klasy K na klasę Complex. Która z poniższych deklaracji jest poprawną deklaracją operatora konwersji? (Deklaracje dotyczą metod klasy K).
b) Complex operator ();
c) operator Complex ( K );
a) operator Complex ();
Complex operator ( K & );
a) operator Complex ();
Czy kompilator C++ generuje automatycznie operatory dla nowych typów danych?
a) Tak, każdy operator posiada swoją wersję domyślną.
c) Tak, ale tylko operatory: =, (), [], -&rt;.
d) Nie, poza pięcioma operatorami, w tym: =, &, delete
b) Nie, każdy potrzebny operator musi był zdefiniowany.
d) Nie, poza pięcioma operatorami, w tym: =, &, delete
2 Które z wymienionych operatorów muszą być definiowane jako metody (funkcje wewnętrzne klasy)?
b) operator +,
c) operator char *,
a) operator [],
d) operator !.
a) operator [],
3 Która z poniższych deklaracji jest niepoprawna.
(Poniższe operatory są definiowane jako funkcje globalne.)
class K;
a) K operator - ( const K, const K );
d) K operator -- ( const K );
c) K operator - ( const K & );
b) K operator -- ( const K &, const K & ); M
c) K operator - ( const K & );
Klasą abstrakcyjną jest klasa, która
d) wszystkie metody wirtualne ma zadeklarowane jako czysto wirtualne.
a) zawiera wyłącznie metody wirtualne,
b) zawiera przynajmniej jedną metodę wirtualną,
c) posiada przynajmniej jedną metodę czysto wirtualną,
c) posiada przynajmniej jedną metodę czysto wirtualną,
Jeżeli w klasie są zdefiniowane metody wirtualne, to
b) w klasach potomnych konieczne jest przeładowanie takich metod,
d) metody te mogą być wywoływane jedyne poprzez wskaźnik lub referencję do obiektu.
c) w klasach potomnych metody o identycznych sygnaturach także będą wirtualne,
a) nie można utworzyć instancji tej klasy,
c) w klasach potomnych metody o identycznych sygnaturach także będą wirtualne,
Termin "polimorfizm" (wielopostaciowość) odnosi się do
b) sposobu realizacji wywołania metody,
c) definicji metody,
d) techniki przekazywania obiektów (jako referencje lub wskaźniki).