kreczmer, W4 - elektroniki


Prawda

Fałsz

Komentarz

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

ostream strumien1, strumien2;

int main()

{

strumien1 = strumien2 = cout;

strumien1 << " Napis1 ";

strumien2 << " Napis2 " << endl;

return 0;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 1

... na wyjsciu standardowym pojawi sie napis:

Napis1 Napis2

KoniecOpisu

OpisPytania 2

... nic sie nie pojawi, gdyz program zawiera blad.

KoniecOpisu

OpisPytania 3

... nic sie nie pojawi, gdyz dla strumieni operacja przypisania

nie jest dozwolona.

KoniecOpisu

patrz tu:http://en.allexperts.com/q/C-1040/fstream-class-member.htm

OpisPytania 4

... nic sie nie pojawi, gdyz wielokrotne przypisywanie dla strumieni

nie jest mozliwe. Nalezaloby to rozwiazac za pomoca pojedynczych

przypisan, tj.

strumien1 = cout; strumien2 = cout;

KoniecOpisu

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

ostream &strumien1 = cout, &strumien2 = strumien1;

int main()

{

strumien1 << " Napis1 ";

strumien2 << " Napis2 " << endl;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 5

... na wyjsciu standardowym pojawi sie napis:

Napis1 Napis2

KoniecOpisu

OpisPytania 6

... na wyjsciu standardowym pojawi sie napis:

Napis1 Napis2

Jednak program moze spowodowac blad wykonania,

gdyz operacje tego typu nie sa dozwolone.

KoniecOpisu

OpisPytania 7

... moze powstac blad, aczkolwiek nie musi,

gdyz "strumien2" jest referencja do referencji.

KoniecOpisu

OpisPytania 8

... operujac na zmiennych referencyjnych "strumien1" i "strumien2",

wykonujemy operacje na strumieniu wyjscia standardowego reprezentowanym

przez obiekt "cout".

KoniecOpisu

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

class KlasaA {

public:

virtual void Wyswietl() { cout << " KlasaA" << endl; }

};

class KlasaB: public KlasaA {

public:

virtual void Wyswietl() { cout << " KlasaB" << endl; }

};

int main()

{

KlasaB *wObiektB = new KlasaB;

KlasaA *wObiektA = wObiektB;

wObiektA->Wyswietl();

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 9

... w programie wystepuje niezgodnosci typow w podstawieniu:

KlasaA *wObiektA = wObiektB;

W tym przypadku nie jest mozliwe domyslne rzutowanie w gore.

KoniecOpisu

OpisPytania 10

... na ekranie pokaze sie napis:

KlasaB

Jest to wynik dzialania metody "Wyswietl" z klasy "KlasaB".

KoniecOpisu

OpisPytania 11

... ponizsze podstawienie moze spowodowac blad.

KlasaA *wObiektA = wObiektB;

Powodem jest wystepowanie metod wirtualnych w definicjach klas.

KoniecOpisu

OpisPytania 12

... obiekt klasy "KlasaB" zawiera w sobie obiekt klasy "KlasaA".

KoniecOpisu

OpisPytania 13

... domyslne destruktory dla klas "KlasaA" i "KlasaB" nie sa

destruktorami wirtualnymi.

KoniecOpisu

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

class KlasaA {

public:

virtual ~KlasaA() {}

};

class KlasaB: public KlasaA {

public:

~KlasaB() {}

};

int main()

{

KlasaB *wObiektB = new KlasaB;

KlasaA *wObiektA = wObiektB;

delete wObiektA;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 14

... zapis programu jest prawidlowy i destrukcja obiektu przebiegnie wlasciwie.

W tym przypadku brak slowa kluczowe "virtual" przed destruktorem klasy "KlasaB"

nie ma zadnego znaczenia.

KoniecOpisu

OpisPytania 15

... sam zapis programu jest prawidlowy. Jednak uruchomienie programu moze

powodowac bledne dzialanie programu. Aby temu zapobiec nalezaloby zmienic

linie:

KlasaA *wObiektA = wObiektB;

na linie:

KlasaA *wObiektA = static_cast<KlasaA*>(wObiektB);

KoniecOpisu

OpisPytania 16

... destruktor klasy "KlasaB" jest jest destruktorem wirtualnym mimo

braku slowa kluczowego "virtual".

KoniecOpisu <- „W klasie pochodnej nie jest konieczne uzywanie modyfikatora virtual do zdefiniowania metody wirtualnej. Wystarczy, ze metoda ta z modyfikatorem virtual została zdefiniowana w klasie bazowej. Kazda nastepna definicja w klasach pochodnych automatycznie uznawana jest jako definicja metody wirtualnej.” (polimorfizm.pdf str 8)

OpisPytania 17

... w programie w linii:

KlasaA *wObiektA = wObiektB;

zachodzi domyslne rzutowanie "w gore". Jest ono mozliwe tylko i wylacznie

dzieki temu, ze klasa "KlasaA" posiada destruktor wirtualny.

KoniecOpisu

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

class KlasaA {

};

class KlasaB: public KlasaA {

};

int main()

{

KlasaA *wObiektA = new KlasaB;

KlasaB *wObiektB = wObiektA;

return 0;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 18

... w programie w linii:

KlasaB *wObiektB = wObiektA;

wystepuje niedozwolona proba rzutowania "w dol" (na nadklase).

KoniecOpisu

OpisPytania 19

... w programie w linii

KlasaB *wObiektB = wObiektA;

wystepuje rzutowanie "w dol" (na nadklase), ktore bedzie poprawne jesli

zastosowany zostanie operator jawnego rzutowania w postaci:

KlasaB *wObiektB = static_cast<KlasaB*>(wObiektA);

KoniecOpisu <- „19 <- coz, za kryterium poprawnosci przyjete zostalo skompilowanie sie. Tutaj warningi moga byc wyrzucone (a nawet powinny!), co nie oznacza, ze niepoprawny jest ten kod i, co za tym idzie, nie skompiluje sie. TRUE - Piłat na forum :))

OpisPytania 20

... w programie w linii:

KlasaB *wObiektB = wObiektA;

rzutowanie "w dol" (na nadklase) byloby poprawne, gdyby zostal

w odpowiedni sposob zdefiniowany wirtualny destruktor w klasie "KlasaA".

KoniecOpisu <- kompilator mowi ze nie, ale możliwe ze cos źle wpisałem

OpisPytania 21

... w programie w linii:

KlasaA *wObiektA = new KlasaB;

nie ma bledu zapisu polecenia. Jednak wykonanie tej operacji moze powodowac

(aczkolwiek nie zawsze musi) blad i przerwanie dzialania programu w momencie

wykonania tej instrukcji.

KoniecOpisu <- szczerze to za bardzo nie wiem, ale wydaje mi się, ze w samym momencie wykonywania tej instrukcji nie będzie zadnych prblemow, ewentualnie, pozniej ze względu na brak wirtualnych destruktorow, gdybyśmy napisali: delete wObiektA;

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

class KlasaA {

public:

void Wyswietl() { cout << " KlasaA" << endl; }

};

class KlasaB: public KlasaA {

public:

virtual void Wyswietl() { cout << " KlasaB" << endl; }

};

int main()

{

KlasaA *wObiektA = new KlasaB;

wObiektA->Wyswietl();

return 0;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 22

... wykonana zostanie metoda z klasy "KlasaA". Jest ona metoda

wirtualna, co wynika z definicji metody o tej samej nazwie

w klasie "KlasaB".

KoniecOpisu <- gdyby było na odrot o tej wirtualnosci to by było dobrze. Tak przynajmniej wnioskuje z tego co wypisane jest pod pytaniem 16.

OpisPytania 23

... wykona sie metoda z klasy "KlasaA". Aby uruchomic metode z klasy

"KlasaB" nalezaloby najpierw dokonac rzutowania w dol (na nadklase),

tzn.

static_cast<KlasaB*>(wObiektA)->Wyswietl();

KoniecOpisu <- kompilator

OpisProblemu ====================================================

Dany jest nastepujacy fragment kodu:

#include <iostream>

using namespace std;

class KlasaA { int _PoleA; };

class KlasaB: public KlasaA { int _PoleB; };

int main()

{

KlasaB *wObiektB = new KlasaB;

KlasaA *wObiektA = wObiektB;

if (wObiektA == wObiektB) cout << "Rownosc nr 1" << endl;

}

Powyzszy kod jest poprawny pod wzgledem skladni i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 24

... operacja porownania wskaznikow jest poprawna. Regula ta obejmuje wszystkie

przypadki tego typu niezaleznie od zlozonosci wewnetrznej struktury obiektu

i podobiektu.

KoniecOpisu <- adresy chyba można porównywać i nic w tym zlego nie ma…

OpisPytania 25

... operacja ta da wlasciwy wynik tylko i wylacznie wtedy, gdy w klasach

beda zdefiniowane destruktory wirtualne.

KoniecOpisu <- nie ma destruktorow wirtualnych, a wynik jest przewidywalny i wiadomo co z tego wyjdzie

OpisPytania 26

... w tym przypadku zachodzi rownosc tylko i wylacznie ze wzgledu

na to, ze klasa "KlasaA" jest bezposrednio dziedziczona przez

klase "KlasaB".

KoniecOpisu rownosc zachodzi, ale nie tylko ze wzgledu na bezposrednie dziedziczenie. Zalozmy ze mamy jeszcze "KlaseC" ktora takze jest dziedziczona bezposrednio przez "KlasaB". Po wykonaniu 'KlasaC *wObiektC = wObiektB', okaze sie, ze rownosci miedzy adresami 'wObiektC == wObiektB' nie bedzie. (Przyklad z wykladu) FALSE

OpisPytania 27

... operacja porownania powoduje niejawne rzutowanie zawartosci zmiennej

wskaznikowej "wObiektB" na wskaznik typu: KlasaA*

KoniecOpisu <- chyba zawartość tu za bardzo nie ma znaczenia

OpisPytania 28

... w programie wykorzystane jest domyslne rzutowanie wskaznikow.

W tym przypadku domyslne rzutowanie nie jest zwiazana z hierarchia

dziedziczenia klas.

KoniecOpisu <- jest związane z hierarchia

OpisProblemu ====================================================

Dany jest fragment kodu:

vector<double> Tab(5);

double &Zm = Tab[1];

Tab.push_back(10);

Zm = Tab[5];

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 29

... po wykonaniu tego kodu zawsze zachodzi warunek:

Zm == 10

Nalezy jednak zwrocic uwage, ze konstrukcja nie jest

poprawna, gdyz poprzez zmienna "Zm" moze byc mozliwe

odwolanie sie do niewlasciwego obszaru pamieci.

KoniecOpisu nastepuje realokacja vectora, po ktorej nie wiadomo na jaki obszar pamieci wskazuje Zm, i moze to powodowac odwolanie sie do niewlasciwego obszaru pamieci. TRUE

OpisPytania 30

... po wykonaniu tego kodu zawsze zachodzi warunek:

Tab[1] == Tab[5]

KoniecOpisu <- prawie nigdy nie zachodzi

OpisProblemu ====================================================

Dany jest fragment kodu:

vector<double> Tab(5);

double &Zm = Tab[1];

Tab.push_back(10);

Zm = Tab[5];

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 31

... po wykonaniu tego kodu zawsze zachodzi warunek:

&Zm == &Tab[1]

KoniecOpisu <- o tym była mowa przy pytaniu 29

OpisPytania 32

... po wykonaniu tego kodu zawsze zachodzi warunek:

Zm == Tab[1]

KoniecOpisu <- j.w.

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

list< vector< double> > Lst(5);

Lst.back()[1] = 5;

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 33

... w podstawieniu w drugiej linii nastepuje proba modyfikacji

drugiej skladowej wektora, ktory jest piatym elementem listy?

KoniecOpisu <- na to wyglada, ale tez może być tu jakis haczyk // Haczyk taki ze to jest niedozwolona operacja (no ale napisane jest proba,a to ze nieudana...)

OpisPytania 34

... wszystkie wektory wchodzace w sklad utworzonej listy maja

rozmiar zerowy (tzn. metoda size() w ich przypadku zwraca 0).

KoniecOpisu <- kompilator

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

list< vector< double> > Lst(5);

Lst.back()[1] = 5;

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 35

... wykonane podstawienie spowoduje utworzenie drugiej skladowej

w ostatnim wektorze listy 'Lst'.

KoniecOpisu <- czy skoro size zwraca 0 to tworzona jest druga skladowa? W sensie, ze nie wiem, ale obstawiam, ze nie // Nie, w taki sposob nie można zmieniac rozmiaru wektora

OpisPytania 36

... zmienna 'Lst' reprezentuje liste wektorow, ktore maja

po piec skladowych.

KoniecOpisu

OpisProblemu ====================================================

Dany jest program:

struct Wektor2f {

float _x, _y;

Wektor2f(float w): _x(w), _y(w) {}

operator float () const { return _x*_x + _y*_y; }

};

int main()

{

Wektor2f Wek = 1;

float Liczba;

Liczba = 2 + Wek * 2;

}

Jest on prawidlowy pod wzgledem skladni.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 37

... po wykonaniu ostatniego dzialania zmienna 'Liczba' zawierac

bedzie wartosc 10.

KoniecOpisu <- kompilator mowi ze 6

OpisPytania 38

... w trakcie realizacji ostatniego dzialania w funkcji main,

tzn. operacji: Liczba = 2 + Wek * 2;

nastepuje niejawna konwersja obiektu 'Wek' do zmiennej tymczasowej

typu float.

KoniecOpisu

OpisPytania 39

... w tym przypadku zapis: Wektor2f Wek = 1;

jest identyczny z zapisem: Wektor2f Wek(1);

gdyz w obu przypadkach nastepuje wywolanie jedynie

konstruktora klasy 'Wektor2f'.

KoniecOpisu

OpisPytania 40

... w funkcji 'main' wystepuje jedno niejawne wywolanie

konstruktora klasy 'Wektor2f' oraz jedna niejawna konwersja

obiektu klasy 'Wektor2f' do zmiennej typu float.

KoniecOpisu

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

list <vector< double> > Lst(5);

vector<double> TabWekt[4] = { vector<double>(5), vector<double>(4) };

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 41

... po wykonaniu tego kodu prawdziwy bedzie warunek:

TabWekt[2].size() == TabWekt[3].size()

KoniecOpisu

OpisPytania 42

... po wykonaniu tego kodu prawdziwy bedzie warunek:

TabWekt[0].size() == TabWekt[3].size[3]()

KoniecOpisu <- tak czy siak, albo program się nie skompiluje (przeszkadza [3] po size), albo i tak będzie nieprawdziwy

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

list <vector< double> > Lst(5);

vector<double> TabWekt[4] = { vector<double>(5), vector<double>(4) };

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 43

... po wykonaniu tego kodu prawdziwy bedzie warunek:

TabWekt[0].size() == Lst.size()

KoniecOpisu

OpisPytania 44

... po wykonaniu tego kodu prawdziwy bedzie warunek:

TabWekt[3].size() == Lst.size()

KoniecOpisu

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

vector<double> Wekt(4);

double *wskA = &*Wekt.begin();

double *wskB = &*Wekt.end();

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 45

... wskaznik "wskA" zawiera adres pierwszego elementu

z tablicy dostepnej poprzez obiekt "Wekt"?

KoniecOpisu

OpisPytania46

... wskaznik "wskB" zawiera adres ostatniego elementu

z tablicy dostepnej poprzez obiekt "Wekt"?

KoniecOpisu <- wskazuje jeden za ostatnim

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

list<double> Lst(4);

double *wskA = &Lst.front();

Lst.push_back(10);

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 47

... do drugiego elementu listy mozna odwolac sie w nastepujacy sposob:

*++Lst.begin();

KoniecOpisu

OpisPytania 48

... wywolanie metody "push_back" spowoduje realokacje pamieci dla

calej listy i dlatego po jej wykonaniu adres w zmiennej "wskA"

moze juz nie byc adresem pierwszego elementu?

KoniecOpisu <- dla listy jest inaczej niż dla vectora

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

class KlasaBazowa { };

class KlasaPochodna: public KlasaBazowa { };

void funkcja(const KlasaBazowa &) { }

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 49

... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?

funkcja( KlasaPochodna() );

KoniecOpisu

OpisPytania 50

... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?

funkcja( new KlasaPochodna() );

KoniecOpisu

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

class KlasaBazowa { };

class KlasaPochodna: public KlasaBazowa { };

void funkcja(const KlasaPochodna &) { }

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 51

... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?

funkcja( * (KlasaBazowa*) &KlasaPochodna() );

KoniecOpisu

OpisPytania 52

... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?

funkcja( KlasaBazowa() );

KoniecOpisu

OpisProblemu ====================================================

Niech dany bedzie fragment kodu:

struct KlasaA {

int _PoleA;

KlasaA(int Wart) { _PoleA = Wart; }

};

struct KlasaB {

KlasaA _PoleKlasyA;

KlasaB();

};

Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym

kontekscie i kompiluje sie bez zadnych ostrzezen.

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 53

... ponizsza implementacja konstruktora klasy "KlasaB"

wymusi uruchomienie konstruktora klasy "KlasaA" z parametrem

o wartosci 10 w celu wlasciwego zainicjalizowania pola "_PoleKlasyA"?

KlasaB::KlasaB(): _PoleKlasyA(10)

{ }

KoniecOpisu

OpisPytania 54

... ponizsza implementacja konstruktora klasy "KlasaB"

wymusi uruchomienie konstruktora klasy "KlasaA" z parametrem

o wartosci 10 w celu wlasciwego zainicjalizowania pola "_PoleKlasyA"?

KlasaB::KlasaB(): KlasaA(10)

{ }

KoniecOpisu

OpisProblemu ====================================================

Dana jest nastepujaca deklaracja zmiennych:

int kk, &ll=kk, &mm=ll;

KoniecOpisu

OpisPytania 55

Czy po wykonaniu nastepujacych operacji:

kk=2;

ll=5;

mm=7;

zmienna kk bedzie miala wartosc 7 ?

KoniecOpisu <- mm i ll to zwyczajnie inne nazwy kk

OpisPytania 56

Czy spelniony jest ponizszy warunek?

&kk == &mm

KoniecOpisu

OpisProblemu ====================================================

Nastepne pytanie dotyczyc bedzie referencji i zmiennych referencyjnych:

KoniecOpisu

OpisPytania 57

Czy poprawne jest stwierdzenie:

Przekazywanie parametru funkcji przez referencje

polega na tym, ze do funkcji przekazywany jest parametr

aktualny, a nie tylko jego wartosc.

Dzieki temu zmiany wartosci parametru w funkcji sa widziane

rowniez na "zewnatrz" tej funkcji.

KoniecOpisu

OpisPytania 58

Czy poprawne jest stwierdzenie:

Jako wynik funkcji wolno przekazywac referencje do

zmiennych lokalnych tej funkcji, poniewaz zmienne te

istnieje caly czas podczas dzialania danej funkcji.

KoniecOpisu <- „Zwracanie przez funkcje referencji do obiektu ma sens w przypadku, gdy obiekt istnieje przed wywołaniem funkcji lub jest tworzony w niej w sposób dynamiczny.” (referencje-prez.pdf str 15); „Błedem jest zwracanie referencji do obiektów tworzonych lokalnie.” (referencje-prez.pdf str 16)

OpisProblemu ====================================================

Pytanie dotyczyc bedzie przeciazania funkcji i metod.

KoniecOpisu

OpisPytania 59

Czy funkcje przeciazone to funkcje majace wspolna sama nazwe

(przy czym wielkosc liter jest nieistotna), lecz rozniace sie

np. liczba parametrow lub typami parametrow?

KoniecOpisu <- wielkość liter jest istotna, chyba ze to co jest w nawiasie jest zalozeniem…

OpisPytania 60

Czy prawdziwe jest stwierdzenie, ze w jezyku C++ mozna przeciazac

funkcje, a nie mozna przeciazac operatorow arytmetycznych

poza obrebem (definicji) danej klasy?

KoniecOpisu

OpisPytania 61

Czy poprawna jest nastepujaca definicja przeciazenia

operatora przesuniecia bitowego dla strumienia wyjsciowego.

std::ostream &operator << ( std::ostream &strumien1, std::ostream &strumien2 )

{

return strumien2;

}

KoniecOpisu <- co to jest przesuniecie bitowe dla strumienia wujsciwego? Nie mam pojecia o co tu chodzi //przesuniecie to po prostu nazwa przeciazonego operatora << i ta definicja jest poprawna

OpisProblemu ====================================================

Pytanie dotyczyc bedzie hermetyzacji danych i metod

oraz funkcji zaprzyjaznionych

KoniecOpisu

OpisPytania 62

Czy hermetyzacja komponentow klasy (pol lub metod) ma na

celu zabezpieczenie ich przed modyfikacja lub wywolaniem przez

inne metody tej samej klasy?

KoniecOpisu

OpisPytania 63

Czy metody prywatne (private) i chronione (protected) klasy

dostepne sa dla funkcji zaprzyjaznionych z dana klasa?

KoniecOpisu

OpisPytania 64

Czy dozwolona jest modyfikacja pol prywatnych danej

klasy w funkcjach zaprzyjaznionych z dana klasa?

KoniecOpisu

OpisProblemu ====================================================

Pytanie dotyczyc bedzie konstruktorow i destruktorow.

KoniecOpisu

OpisPytania 65

Czy prawdziwe jest ponizsze stwierdzenie:

Jezeli dla klasy "KlasaA" nie zostal zdefiniowany zaden

konstruktor, to przy deklarowaniu w programie glownym

zmiennej danej klasy, np.:

KlasaA ObiektA;

zostanie wywolany domyslny konstruktor kopiujacy?

KoniecOpisu <- zostanie wywolany domyślny bezparametryczny konstuktor

OpisPytania 66

Czy jedna z operacji powodujacej niejawne wywolanie

konstruktora danej klasy jest dynamiczna alokacja

obiektu tejze klasy za pomoca operatora "new" ?

KoniecOpisu <- chyba to jest jawne wywolanie konstruktora

//ja dalbym tutaj TRUE - http://en.wikipedia.org/wiki/New_(C%2B%2B)

OpisPytania 67

Czy destruktory sa zawsze wywolywane niejawnie w przypadku

dla zmiennych statycznych, gdy sterowanie osiagnie koniec

zakresu waznosci deklaracji danego obiektu.

KoniecOpisu <- zmienna statyczna dotyczy klasy, a nie pojedynczych obiektow

OpisProblemu ====================================================

Pytanie dotyczyc bedzie konstruktorow i destruktorow.

KoniecOpisu

OpisPytania 68

Czy prawda jest, ze:

Destruktor powinien miec taka sama

liste parametrow w wywolaniu jak konstruktor.

KoniecOpisu

OpisPytania 69

Niech bedzie dana definicja klasy:

class LZespolona {

private:

double _re, _im;

public:

LZespolona() { _re = _im = 0;}

};

Czy klasa ta zawiera konstruktor kopiujacy (jawny lub niejawny, o ile

taki moze istniec w tym przypadku).

KoniecOpisu

OpisProblemu ====================================================

Czy konstruktor ...

KoniecOpisu

OpisPytania 70

... jest metoda skladowa klasy, ktora

zawsze inicjalizuje pola tej klasy?

KoniecOpisu <- chyba nie zawsze; dla przykładu pusty konstyktor

OpisPytania 71

... ma taka sama nazwe jak nazwa klasy i

moze byc wywolany jawnie jak kazda metoda.

KoniecOpisu <- teraz pytanie co to znaczy, ze może być wywolany jawnie jak kazda metoda. Dla przykładu:

klasa obiekt;

obiekt = klasa();

wszystko będzie dobrze, ale już dla obiekt.klasa() nie będzie.

OpisPytania 72

... moze byc zadeklarowany w ponizszy sposob:

class Klasa {

Klasa(Klasa);

public:

};

KoniecOpisu

OpisProblemu ====================================================

Czy przciazanie metod klasy ...

KoniecOpisu

OpisPytania 73

... jest mozliwe tylko poza sekcja chroniona (protected) danej klasy.

KoniecOpisu

OpisPytania 74

... jest zabronione w przypadku destruktora.

KoniecOpisu <- sprawdzałem kompilatorem nawet i wyglada na to ze nie można //Na 100% nie można - http://wwwhome.math.utwente.nl/~bella/docs/c++-faq/dtors.html

OpisPytania 75

... wykorzystujace argumenty domyslne moze prowadzic

do niejednoznacznosci, tzn. z zapisu wywolania metody

bez znajomosci wartosci argumentow domyslnych nie

bedzie mozna stwierdzic, ktora metoda bedzie wywolana?

Pytanie dotyczy definicji w programie, ktory kompiluje sie

poprawnie i nie wystepuja zadne ostrzezenia.

KoniecOpisu <- oczywiste jest to, ze taki program się nie skompiluje, ale uwzględniając zalozenie(no wlasnie, to zalozenie jest?) nie będzie wiadomo, o ktora metode chodzi

OpisProblemu ====================================================

Niech bedzie dana definicja:

int numer::funkcja(int i)

{

...

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 76

... moze to byc definicja metody dla klasy lub struktury lub unii

lub tez unii o nazwie "numer"?

KoniecOpisu

OpisPytania 77

jezeli jest to metoda klasy "numer", to jej definicja

jest umieszczona na pewno poza blokiem definicji tej klasy?

KoniecOpisu <- kompilator nie wykazuje zadnych błędów, czyli okazuje się ze może to być wewnątrz bloku definicji klasy

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" i jej klase pochodna

"KlasaB":

class KlasaA {

int _Pole;

public:

KlasaA(int a) { _Pole = a; };

};

class KlasaB : public KlasaA {

public:

int Oblicz();

};

Czy prawda jest, ze ...

KlasaB ob(2);

KoniecOpisu

OpisPytania 78

... Obiekt 'ob' nie bedzie mogl byc utworzony ze wzgledu na brak

konstruktora parametrycznego?

KoniecOpisu <<- no nie utworzy sie,miedzy innymi , ze wzgledu na brak konstruktora parametrycznego, a to ze kod sie nie skompiluje to juz zupelnie inna bajka. TRUE

OpisPytania 79

... zapis jest poprawny i dziedziczone pole '_Pole'

zostanie zainicjalizowane wartoscia 2?

KoniecOpisu

OpisPytania 80

... zapis jest poprawny, jednak pole o nazwie "_Pole" klasy "KlasaA"

nie bedzie dostepne z poziomu klasy pochodnej ("KlasaB")?

KoniecOpisu

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:

class KlasaA {

public:

int _Pole;

};

const KlasaA Ob;

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 81

... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby

w klasie zostal zadeklarowany konstruktor bezparametryczny,

np.

class KlasaA {

public:

int _Pole;

KlasaA() {}

};

KoniecOpisu

OpisPytania 82

... obiekt nie jest inicjalizowany, tak wiec nie moze byc

zadeklarowany jako staly.

KoniecOpisu <- „Brak inicjalizacji obiektu stałego wykrywany jest przez kompilator.” (03-referencje.pdf slajd 112)

OpisPytania 83

... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby

w klasie zostal zadeklarowany konstruktor postaci:

class KlasaA {

public:

int _Pole;

KlasaA(int Wartosc) { _Pole = Wartosc; }

};

KoniecOpisu <- gdyby dodalo sie parametr podczas tworzenia obiektu, to i owszem, ale nie jest podany

OpisPytania 84

... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby

pole '_Pole' zostalo zadeklarowane jako statyczne,

tzn.:

class KlasaA {

public:

static int _Pole;

};

KoniecOpisu <- nadal brakuje konstruktora

OpisPytania 85

... bylaby poprawna jesli odpowiednia instrukcja zainicjalizuje sie

obiekt po jego utworzeniu.

KoniecOpisu <- nie utworzy się nawet, czyli nie będzie czego inicjowac

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:

class KlasaA {

public:

int _Pole;

static int _PoleStatyczne;

};

int KlasaA::_PoleStatyczne = 0;

int main()

{

const KlasaA Ob;

Ob._Pole = 1;

Ob._PoleStatyczne = 4;

}

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 86

... ze wzgledu na to, iz obiekt 'Ob' jest zadeklarowny jako staly,

to obie operacje przypisania w funkcji 'main' sa niepoprawne.

KoniecOpisu <- i znowu dylemat, bo ze wzgldu na to, ze nie ma konstruktora program się nie skompiluje, ale ze wzgledu na to, iz obiekt 'Ob' jest zadeklarowny jako staly tylko pierwsza operacja przypisania nie będzie poprawna

OpisPytania 87

... obie operacje przypisania wartosci polu '_Pole' mozna zrealizowac

pod warunkiem wykonania rzutowania za pomoca operatora static_cast.

KoniecOpisu <- za pomoca operatora const_cast to i owszem, nawet na dwa sposoby (03-referencja.pdf slajdy 120-122), ale za pomoca static_cast już nie.

OpisPytania 88

... operacja zmiany wartosci pola statycznego moze byc wykonana

zawsze niezaleznie od tego czy obiekt jest staly czy nie.

Jedynym warunkiem jest dostepnosc tego pola.

KoniecOpisu

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:

class KlasaA {

public:

int _Pole;

};

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 89

... ma zdefiniowane domyslne jeden konstruktor. Jest nim konstruktor

bezparametryczny.

KoniecOpisu <- ma zdefiniowane domyślne dwa konstruktory: bezparametryczny i kopiujący

OpisPytania 90

... ma zdefiniowane co najmniej trzy konstruktory.

KoniecOpisu <- j.w.

OpisPytania 91

... ma zdefiniowane co najmniej dwa konstruktory.

KoniecOpisu <- `co najmniej' nie oznacza, ze koniecznie musi ich być wiecej. prawda?

OpisPytania 92

... ma zdefiniowany konstruktor bezparametryczny.

KoniecOpisu <- domyślny, ale ma

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:

class KlasaA {

public:

int _Pole;

};

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 93

... w tej klasie nie ma zdefiniowanego zadnego konstruktora,

z tego powodu nie ma rowniez konstruktorow domyslnych.

KoniecOpisu

OpisPytania 94

... w tej klasie istnieja co najmniej trzy konstruktory domyslne.

KoniecOpisu

OpisPytania 95

... w tej klasie istnieje konstruktor domyslny odpowiedzialny za

kopiowanie obiektu.

KoniecOpisu

OpisPytania 96

... mozna utworzyc obiekt tej klasy wywolujac konstruktor

bezparametryczny.

KoniecOpisu <- tak mi się przynajmniej wydaje, bo przy tworzeniu obiektu, wywola się chyba domyślny bezparametryczny konstruktor, ewentualnie można tak:
KlasaA obj = KlasaA();//kompilator mowi tak :)

OpisProblemu ====================================================

Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:

class KlasaA {

public:

int _Pole;

KlasaA(): _Pole() {}

};

Czy prawda jest, ze ...

KoniecOpisu

OpisPytania 97

... w tej klasie zdefiniowanie konstruktora bezparametrycznego powoduje

uniewaznienie domyslnego konstruktora kopiujacego.

KoniecOpisu

OpisPytania 98

... w tej klasie po utworzeniu obiektu pole "_Pole" bedzie mialo na ogol

wartosc 0. Nie jest jednak zagwarantowane, ze tak bedzie w kazdym przypadku.

W przypadku konstruktora kopiujacego tak juz byc nie musi.

KoniecOpisu

OpisPytania 99

... w tej klasie po utworzeniu obiektu pole "_Pole" bedzie mialo wartosc 0

po kazdorazowym utworzeniu obiektu z wykorzystaniem konstruktora

bezparametrycznego.

KoniecOpisu <- wydaje się ze tak, ale czy na pewno?//kompilator znow na tak :)

OpisPytania 100

... w tej klasie oprocz zdefiniowanego konstruktora bezparametrycznego

istnieja jeszcze co najmniej dwa domyslne konstruktory.

KoniecOpisu <- jedyny domyślny teraz to kopiujący, bezparametryczny zostal przedefiniowany i teraz juz nie jest domyslny



Wyszukiwarka

Podobne podstrony:
krzysztofik, W4 - elektroniki
3858, W4 - elektroniki
polak, W4 - elektroniki
krzysztofik, W4 - elektroniki
polak, W4 - elektroniki
1643, W4 - elektroniki
3334, W4 - elektroniki
1663, W4 - elektroniki
pomianek, W4 - elektroniki
zamojski, W4 - elektroniki
radosz, W4 - elektroniki
późniak-koszałka, W4 - elektroniki
7807, W4 - elektroniki
galar, W4 - elektroniki
piasecki, W4 - elektroniki
klink, W4 - elektroniki
borowiec, W4 - elektroniki
staniec, W4 - elektroniki

więcej podobnych podstron