Test w formie fiszek egzamin, systemy operacyjne, Bazy danych, obrazy, programowanie, sieci
Ilość pytań: 156
Rozwiązywany: 6417 razy
Poziom optymalizacji, w którym kompilator będzie próbował zwiększyć wydajność kodu za cenę jego rozmiaru oraz czasu kompilacji
a) Poziom 2 (-O2)
c) Poziom pierwszy (-O1) M
d) domyślny
b) Poziom trzeci (-O3)
a) Poziom 2 (-O2)
Kompilator GCC przeprowadza najpierw:?
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
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
b) optymalizację zależną, a następnie niezależ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
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*/?
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
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
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.
d) Zaakceptuje linię /*1*/, ale w linii /*2*/ odmów przypisania wskaźnikowi do składowej wartości NULL.
b) Stwierdzi błąd składni w linii /*1*/ (niepoprawna konstrukcja).
a) Kod jest całkowicie poprawny.
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?
a) W linii /*1*/ jest błąd składni, uniemożliwiający kompilację
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*/.
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
d) definiowanie rozmiarów i wewnętrznej struktury obiektów.
a) zdefiniowanie nowego typu danych,
określenie wartości pól statycznych,
określenie wartości pól statycznych,
Zadaniem konstruktora jest
d) logiczne powiązanie metod i pól.
c) zintegrowanie obiektu z wywołaniami systemu operacyjnego,
a) przydzielenie pamięci dla obiektu,
b) nadanie wartości polom obiektu,
b) nadanie wartości polom obiektu,
Uruchomienie destruktora na rzecz danego obiektu powoduje
c) zwolnienie pamięci zajmowanej przez ten obiekt,
d) usunięcie informacji o obiekcie z globalnego rejestru obiektów.
a) wykonanie procedury zdefiniowanej pod stosowną nazwą,
b) wyczyszczenie obszaru danych zajmowanych przez ten obiekt, M
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:
d) możliwa, jeżeli użyje się operatora zakresu (tj. '::').
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),
a) niemożliwa, ze względu na zakres 'protected', M
d) możliwa, jeżeli użyje się operatora zakresu (tj. '::').
W języku C++ dziedzicznie _nie_ obejmuje
operatora przypisania,
d) wszystkich wymienionych w punktach a-c.
a) składowych niestatycznych,
b) składowych o zakresie dostępności 'private',
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:
a) zwolnienie pamięci,
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).
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?
b) K( int, float = 0);
c) K( );
a) K( const K & );
d) float operator();
b) K( int, float = 0);
Który z poniższych konstruktorów _nie_ jest konstruktorem konwertującym?
c) K( );
d) L( int = 0, int = 0 );
a) I( float );
b) J( int, float = 0);
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).
a) operator Complex ();
c) operator Complex ( K );
b) Complex operator ();
Complex operator ( K & );
a) operator Complex ();
Czy kompilator C++ generuje automatycznie operatory dla nowych typów danych?
b) Nie, każdy potrzebny operator musi był zdefiniowany.
c) Tak, ale tylko operatory: =, (), [], -&rt;.
d) Nie, poza pięcioma operatorami, w tym: =, &, delete
a) Tak, każdy operator posiada swoją wersję domyślną.
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)?
c) operator char *,
a) operator [],
b) operator +,
d) operator !.
a) operator [],
3 Która z poniższych deklaracji jest niepoprawna.
(Poniższe operatory są definiowane jako funkcje globalne.)
class K;
b) K operator -- ( const K &, const K & ); M
c) K operator - ( const K & );
d) K operator -- ( const K );
a) K operator - ( const K, const K );
c) K operator - ( const K & );
Klasą abstrakcyjną jest klasa, która
a) zawiera wyłącznie metody wirtualne,
c) posiada przynajmniej jedną metodę czysto wirtualną,
b) zawiera przynajmniej jedną metodę wirtualną,
d) wszystkie metody wirtualne ma zadeklarowane jako czysto wirtualne.
c) posiada przynajmniej jedną metodę czysto wirtualną,
Jeżeli w klasie są zdefiniowane metody wirtualne, to
c) w klasach potomnych metody o identycznych sygnaturach także będą wirtualne,
a) nie można utworzyć instancji tej klasy,
d) metody te mogą być wywoływane jedyne poprzez wskaźnik lub referencję do obiektu.
b) w klasach potomnych konieczne jest przeładowanie takich metod,
c) w klasach potomnych metody o identycznych sygnaturach także będą wirtualne,
Termin "polimorfizm" (wielopostaciowość) odnosi się do
d) techniki przekazywania obiektów (jako referencje lub wskaźniki).