Jest to lista pytań, która jest wypadkową odpowiedzi moich(slowman), Modima i AIRu z 2 roku.
ZMIENIONE ODPOWIEDZI DO PYTAŃ: 68, 78, 136, 137 i 143
true
false
W sumie jest 150 pytań - 2 razy ponumerowałem OpisProblemu. Jeśli zauważyliście jakieś błędy to najlepiej piszcie na forum w odpowiednim temacie( http://air.tmtsystems.eu/viewtopic.php?f=71&t=461 ). Wszystkie potencjalne błędy będą mile widziane.
Sprzeczne pytania zostały:
przedyskutowane także z Małkiem - niestety w większości trudnych przypadków odsyłał do Kreczmera.
skonsultowane z dr Kreczmerem-jednak nie udzielił on żadnej konkretnej odpowiedzi-zazwyczaj uśmiechał się licząc nasze szanse na niezaliczenie.
Wyjątków ma nie być na ekranówce zaliczeniowej-będą na egzaminie :).
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
1 OpisPytania
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu
2 OpisPytania
... nic sie nie pojawi, gdyz program zawiera blad.
KoniecOpisu
3 OpisPytania
... nic sie nie pojawi, gdyz dla strumieni operacja przypisania
nie jest dozwolona.
KoniecOpisu
4 OpisPytania
... 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
5 OpisPytania
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu
6 OpisPytania
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
Jednak program moze spowodowac blad wykonania,
gdyz operacje tego typu nie sa dozwolone.
KoniecOpisu
7 OpisPytania
... moze powstac blad, aczkolwiek nie musi,
gdyz "strumien2" jest referencja do referencji.
KoniecOpisu
8 OpisPytania
... 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 FiguraGeom {
public:
virtual void Wyswietl() { cout << " FiguraGeom" << endl; }
};
class Kwadrat: public FiguraGeom {
public:
virtual void Wyswietl() { cout << " Kwadrat" << endl; }
};
int main()
{
Kwadrat *wKwd = new Kwadrat;
FiguraGeom *wFig = wKwd;
wFig->Wyswietl();
}
Czy prawda jest, ze ...
KoniecOpisu
9 OpisPytania
... w programie wystepuje niezgodnosci typow w podstawieniu:
FiguraGeom *wFig = wKwd;
W tym przypadku nie jest mozliwe niejawne rzutowanie "w gore".
KoniecOpisu
10 OpisPytania
... na ekranie pokaze sie napis:
Kwadrat
Jest to wynik dzialania metody "Wyswietl" z klasy "Kwadrat".
KoniecOpisu
11 OpisPytania
... ponizsze podstawienie moze spowodowac blad.
FiguraGeom *wFig = wKwd;
Powodem jest wystepowanie metod wirtualnych w definicjach klas.
KoniecOpisu
12 OpisPytania
... obiekt klasy "Kwadrat" zawiera w sobie obiekt klasy "FiguraGeom".
KoniecOpisu - potwierdzone przez Kreczmera
13 OpisPytania
... domyslne destruktory dla klas "FiguraGeom" i "Kwadrat" 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
14 OpisPytania
... 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
15 OpisPytania
... sam zapis programu jest prawidlowy. Jednak uruchomienie programu moze
powodowac jego bledne dzialanie. Aby temu zapobiec nalezaloby zmienic
linie:
KlasaA *wObiektA = wObiektB;
na linie:
KlasaA *wObiektA = static_cast<KlasaA*>(wObiektB);
KoniecOpisu
16 OpisPytania
... destruktor klasy "KlasaB" jest jest destruktorem wirtualnym mimo
braku slowa kluczowego "virtual".
KoniecOpisu
17 OpisPytania
... w programie w linii:
KlasaA *wObiektA = wObiektB;
zachodzi niejawne 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".
KoniecOpisu
19 OpisPytania
... w programie w linii
KlasaB *wObiektB = wObiektA;
wystepuje rzutowanie "w dol", ktore bedzie poprawne jesli
zastosowany zostanie operator jawnego rzutowania w postaci:
KlasaB *wObiektB = static_cast<KlasaB*>(wObiektA);
KoniecOpisu
20 OpisPytania
... w programie w linii:
KlasaB *wObiektB = wObiektA;
rzutowanie "w dol" byloby poprawne, gdyby zostal
w odpowiedni sposob zdefiniowany wirtualny destruktor w klasie "KlasaA".
KoniecOpisu
21 OpisPytania
... 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
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
22 OpisPytania
... wykonana zostanie metoda z klasy "KlasaA". Jest ona metoda
wirtualna, co wynika z definicji metody o tej samej nazwie
w klasie "KlasaB".
KoniecOpisu
23 OpisPytania
... wykona sie metoda z klasy "KlasaA". Aby uruchomic metode z klasy
"KlasaB" nalezaloby najpierw dokonac rzutowania "w dol",
tzn.
static_cast<KlasaB*>(wObiektA)->Wyswietl();
KoniecOpisu
24 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
25 OpisPytania
... operacja porownania wskaznikow jest poprawna. Regula ta obejmuje wszystkie
przypadki tego typu niezaleznie od zlozonosci wewnetrznej struktury obiektu
i podobiektu.
KoniecOpisu(-sprawdzane +Kreczmer)
26 OpisPytania
... operacja ta da wlasciwy wynik tylko i wylacznie wtedy, gdy w klasach
beda zdefiniowane destruktory wirtualne.
KoniecOpisu
27 OpisPytania
... 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” //inaczej niż Modimo
28 OpisPytania
... operacja porownania powoduje niejawne rzutowanie zawartosci zmiennej
wskaznikowej "wObiektB" na wskaznik typu: KlasaA*
KoniecOpisu -Sprawdzane u Kreczmera-chyba podobnie jak w zadaniu 25
29 OpisPytania
... w programie wykorzystane jest niejawne rzutowanie wskaznikow.
W tym przypadku niejawne rzutowanie nie jest zwiazane z hierarchia
dziedziczenia klas.
KoniecOpisu
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
30 OpisPytania
... jesli kod wykona sie poprawnie, to po ostatnim podstawieniu
zawsze bedzie zachodzil warunek:
Zm == 10
Konstrukcja ta jest jednak niepoprawna, gdyz poprzez zmienne
"Zm" moze nastapic odwolanie do niewlasciwego obszaru pamieci.
KoniecOpisu
31 OpisPytania
... po wykonaniu tego kodu zawsze zachodzi warunek:
Tab[1] == Tab[5]
KoniecOpisu
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
32 OpisPytania
... po wykonaniu tego kodu zawsze zachodzi warunek:
&Zm == &Tab[1]
KoniecOpisu
33 OpisPytania
... po wykonaniu tego kodu zawsze zachodzi warunek:
Zm == Tab[1]
KoniecOpisu
OpisProblemu ====================================================
Niech dana bedzie deklaracja zmiennej:
list< vector< double> > Lst(5);
Zakladamy, ze powyzszy kod jest umieszczony we wlasciwym
kontekscie i kompiluje sie bez zadnych ostrzezen.
Czy prawda jest, ze ...
KoniecOpisu
34 OpisPytania
... w podstawieniu przedstawionym ponizej
Lst.back()[1] = 5;
nastepuje proba modyfikacji drugiej skladowej wektora,
ktory jest piatym elementem listy?
KoniecOpisu
35 OpisPytania
... wszystkie wektory wchodzace w sklad utworzonej listy maja
rozmiar zerowy (tzn. metoda size() w ich przypadku zwraca 0).
KoniecOpisu
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
36 OpisPytania
... wykonane podstawienie spowoduje utworzenie drugiej skladowej
w ostatnim wektorze listy 'Lst'.
KoniecOpisu
37 OpisPytania
... 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
38 OpisPytania
... po wykonaniu ostatniego dzialania zmienna 'Liczba' zawierac
bedzie wartosc 10.
KoniecOpisu
39 OpisPytania
... 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
40 OpisPytania
... 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
41 OpisPytania
... w funkcji 'main' wystepuje 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
42 OpisPytania
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[2].size() == TabWekt[3].size()
KoniecOpisu
43 OpisPytania
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[0].size() == TabWekt[3].size()
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
44OpisPytania
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[0].size() == Lst.size()
KoniecOpisu
45 OpisPytania
... 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
46 OpisPytania
... wskaznik "wskA" zawiera adres pierwszego elementu
dostepnego poprzez obiekt "Wekt"?
KoniecOpisu
47 OpisPytania
... wskaznik "wskB" zawiera adres ostatniego elementu
dostepnego poprzez obiekt "Wekt"?
KoniecOpisu
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
48 OpisPytania
... do drugiego elementu listy mozna odwolac sie w nastepujacy sposob:
*++Lst.begin();
KoniecOpisu
49 OpisPytania
... 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
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
50 OpisPytania
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( KlasaPochodna() );
KoniecOpisu
51 OpisPytania
... 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
52 OpisPytania
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( *static_cast<KlasaBazowa*>(&KlasaPochodna()) );
KoniecOpisu
53 OpisPytania
... 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
54 OpisPytania
... 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
55 OpisPytania
... 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
56 OpisPytania
Czy po wykonaniu nastepujacych operacji:
kk=2;
ll=5;
mm=7;
zmienna kk bedzie miala wartosc 7 ?
KoniecOpisu
57 OpisPytania
Czy spelniony jest ponizszy warunek?
&kk == &mm
KoniecOpisu
OpisProblemu ====================================================
Nastepne pytanie dotyczyc bedzie referencji i zmiennych referencyjnych:
KoniecOpisu
58 OpisPytania
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
59 OpisPytania
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
OpisProblemu ====================================================
Pytanie dotyczyc bedzie przeciazania funkcji i metod.
KoniecOpisu
60 OpisPytania
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 -inaczej niż u Modimo-pytany Kreczmer w zasadzie nie udzielił odpowiedzi, ani wskazówki
61 OpisPytania
Czy prawdziwe jest stwierdzenie, ze w jezyku C++ mozna przeciazac
funkcje, a nie mozna przeciazac operatorow arytmetycznych
poza obrebem (definicji) danej klasy?
KoniecOpisu
62 OpisPytania
Czy poprawna jest nastepujaca definicja przeciazenia
operatora przesuniecia bitowego dla strumienia wyjsciowego.
std::ostream &operator << ( std::ostream &strumien1, std::ostream &strumien2 )
{
return strumien2;
}
KoniecOpisu
OpisProblemu ====================================================
Pytanie dotyczyc bedzie hermetyzacji danych i metod
oraz funkcji zaprzyjaznionych
KoniecOpisu
63 OpisPytania
Czy hermetyzacja komponentow klasy (pol lub metod) ma na
celu zabezpieczenie ich przed modyfikacja lub wywolaniem przez
inne metody tej samej klasy?
KoniecOpisu
64 OpisPytania
Czy metody prywatne (private) i chronione (protected) klasy
dostepne sa dla funkcji zaprzyjaznionych z ta klasa?
KoniecOpisu
65 OpisPytania
Czy dozwolona jest modyfikacja pol prywatnych danej
klasy w funkcjach zaprzyjaznionych z ta klasa?
KoniecOpisu
OpisProblemu ====================================================
Pytanie dotyczyc bedzie konstruktorow i destruktorow.
KoniecOpisu
66 OpisPytania
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
67 OpisPytania
Czy jedna z operacji powodujacej niejawne wywolanie
konstruktora danej klasy jest dynamiczna alokacja
obiektu tejze klasy za pomoca operatora "new" ?
KoniecOpisu - Sprawdzone u Kreczmer
68 OpisPytania
Czy destruktory sa zawsze wywolywane niejawnie w przypadku
dla zmiennych statycznych, gdy sterowanie osiagnie koniec
zakresu waznosci deklaracji danego obiektu.
KoniecOpisu - założywszy, że „ zakresu waznosci deklaracji danego obiektu” to koniec np. funkcji, gdzie ten obiekt został stworzony to odp. NIE. Taki obiekt zostanie usunięty podczas kończenia pracy progrmu.
OpisProblemu ====================================================
Pytanie dotyczyc bedzie konstruktorow i destruktorow.
KoniecOpisu
69 OpisPytania
Czy prawda jest, ze:
Destruktor powinien miec taka sama
liste parametrow w wywolaniu jak konstruktor.
KoniecOpisu
70 OpisPytania
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
71 OpisPytania
... jest metoda skladowa klasy, ktora
zawsze inicjalizuje pola tej klasy?
KoniecOpisu
72 OpisPytania
... ma taka sama nazwe jak nazwa klasy i
moze byc wywolany jawnie jak kazda metoda.
KoniecOpisu
73 OpisPytania
... moze byc zadeklarowany w ponizszy sposob:
class Klasa {
Klasa(Klasa);
public:
};
KoniecOpisu
OpisProblemu ====================================================
Czy przciazanie metod klasy ...
KoniecOpisu
74 OpisPytania
... jest mozliwe tylko poza sekcja chroniona (protected) danej klasy.
KoniecOpisu
75 OpisPytania
... jest zabronione w przypadku destruktora.
KoniecOpisu
76 OpisPytania
... 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 -sprawdzone u Kreczmera
OpisProblemu ====================================================
Niech bedzie dana definicja:
int numer::funkcja(int i)
{
...
}
Czy prawda jest, ze ...
KoniecOpisu
77 OpisPytania
... moze to byc definicja metody dla klasy lub struktury lub unii
lub tez unii o nazwie "numer"?
KoniecOpisu
78 OpisPytania
jezeli jest to metoda klasy "numer", to jej definicja
jest umieszczona na pewno poza blokiem definicji tej klasy?
KoniecOpisu //kolesie z II roku podobno kompilowali - ale, jeśli chodzi o definicje postaci: numer::funkcja(int i); to jej nie można wsadzić do 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
79 OpisPytania
... Obiekt 'ob' nie bedzie mogl byc utworzony ze wzgledu na brak
konstruktora parametrycznego?
KoniecOpisu
80 OpisPytania
... zapis jest poprawny i dziedziczone pole '_Pole'
zostanie zainicjalizowane wartoscia 2?
KoniecOpisu
81 OpisPytania
... 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
82 OpisPytania
... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby
w klasie zostal zadeklarowany konstruktor bezparametryczny,
np.
class KlasaA {
public:
int _Pole;
KlasaA() {}
};
KoniecOpisu
83 OpisPytania
... obiekt nie jest inicjalizowany, tak wiec nie moze byc
zadeklarowany jako staly.
KoniecOpisu
84 OpisPytania
... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby
w klasie zostal zadeklarowany konstruktor postaci:
class KlasaA {
public:
int _Pole;
KlasaA(int Wartosc) { _Pole = Wartosc; }
};
KoniecOpisu
85 OpisPytania
... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby
pole '_Pole' zostalo zadeklarowane jako statyczne,
tzn.:
class KlasaA {
public:
static int _Pole;
};
KoniecOpisu
86 OpisPytania
... bylaby poprawna jesli odpowiednia instrukcja zainicjalizuje
obiekt po jego utworzeniu zgodnie ze schematem:
KlasaA Ob;
jakas_instrukcja_inicjalizujaca_obiekt_Ob;
gdzie za napis "jakas_instrukcja_inicjalizujaca_obiekt_Ob" trzeba
podstawic odpowiednia instrukcje lub ciag instrukcji.
KoniecOpisu ??????????
OpisProblemu ====================================================
Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:
class KlasaA {
public:
int _Pole;
static int _PoleStatyczne;
KlasaA() {}
};
int KlasaA::_PoleStatyczne = 0;
int main()
{
const KlasaA Ob;
Ob._Pole = 1;
Ob._PoleStatyczne = 4;
}
Czy prawda jest, ze ...
KoniecOpisu
87 OpisPytania
... ze wzgledu na to, iz obiekt 'Ob' jest zadeklarowny jako staly,
to obie operacje przypisania w funkcji 'main' sa niepoprawne.
KoniecOpisu
88 OpisPytania
... obie operacje przypisania w funkcji "main" mozna zrealizowac
pod warunkiem wykonania rzutowania za pomoca operatora static_cast.
KoniecOpisu -inaczje niż Modimo-mi się nie udało ruszyć _Pole
89 OpisPytania
... 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 "KlasaX" oraz zdeklarowany jest obiekt Ob:
class KlasaX {
public:
int _Pole;
};
Czy prawda jest, ze ...
KoniecOpisu
89 OpisPytania
... w klasie tej istnieje tylko jeden domyslny konstruktor. Jest nim konstruktor
bezparametryczny.
KoniecOpisu
90 OpisPytania
... w klasie tej istnieja co najmniej trzy domyslne konstruktory.
KoniecOpisu
91 OpisPytania
... w klasie tej istnieja co najmniej dwa domyslne konstruktory.
KoniecOpisu
92 OpisPytania
... w klasie tej istnieje konstruktor bezparametryczny.
KoniecOpisu
OpisProblemu ====================================================
Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:
class KlasaA {
public:
int _Pole;
};
Czy prawda jest, ze ...
KoniecOpisu
93 OpisPytania
... w tej klasie nie ma zdefiniowanego zadnego konstruktora,
z tego powodu nie ma rowniez konstruktorow domyslnych.
KoniecOpisu
94 OpisPytania
... w tej klasie istnieja co najmniej trzy konstruktory domyslne.
KoniecOpisu
95 OpisPytania
... w tej klasie istnieje konstruktor domyslny odpowiedzialny za
kopiowanie obiektu.
KoniecOpisu
96 OpisPytania
... mozna utworzyc obiekt tej klasy wywolujac konstruktor
bezparametryczny.
KoniecOpisu
OpisProblemu ====================================================
Mamy zdefiniowana klase "FiguraGeom" oraz zdeklarowany jest obiekt Ob:
class FiguraGeom {
public:
double _Obwod;
FiguraGeom(): _Obwod() {}
};
Czy prawda jest, ze ...
KoniecOpisu
97 OpisPytania
... w tej klasie zdefiniowanie konstruktora bezparametrycznego powoduje
uniewaznienie domyslnego konstruktora kopiujacego.
KoniecOpisu
98 OpisPytania
... w tej klasie po utworzeniu obiektu jego pole "_Obwod" bedzie
ono mialo zawsze wartosc 0, o ile zostanie uzyty konstruktor
bezparametryczny. W innym przypadku juz tak byc nie musi.
KoniecOpisu
99 OpisPytania
... w tej klasie po utworzeniu obiektu jego pole "_Obwod" bedzie ono mialo
wartosc 0 po kazdorazowym utworzeniu obiektu z wykorzystaniem konstruktora
bezparametrycznego. Jest to zagwarantowane przez standard ANSI C++.
KoniecOpisu
100 OpisPytania
... w tej klasie oprocz zdefiniowanego konstruktora bezparametrycznego
istnieja jeszcze co najmniej dwa domyslne konstruktory.
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klasy:
struct LiczbaZespolona {
float _Re, _Im;
public:
float Re() const { return _Re; }
float& Re() { return _Re; }
float Im() const { return _Im; }
float& Im() { return _Im; }
};
Czy prawda jest, ze ...
KoniecOpisu
101 OpisPytania
... metody "Re()" oraz "Im()" nie sa przeciazone, gdyz zwracaja rozny typ
wartosci.
KoniecOpisu
102 OpisPytania
... niezaleznie od sposobu utworznia obiektu tej klasy nie mozna
zmienic jego zawartosci.
KoniecOpisu
103 OpisPytania
... dla kodu przedstawionego ponizej zostanie wywolana metoda
"float LiczbaZespolona::Re() const".
float Odczyt(LiczbaZespolona& Z)
{
cout << Z.Re();
}
KoniecOpisu
104 OpisPytania
... w funkcji ponizej tworzy sie obiekt staly, ktory jest inicjalizowany
wartoscia parametru wywolania tej funkcji.
float Odczyt(const LiczbaZespolona Z)
{
cout << Z.Re();
}
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klasy oraz zapowiedz definicji funkcji:
class KlasaLiczby {
float _Liczba;
public:
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
};
void Dzialaj(const KlasaLiczby Li);
Czy prawda jest, ze ...
KoniecOpisu
105 OpisPytania
... dla wywolania:
int main()
{
KlasaLiczby Li;
Dzialaj(Li);
}
Zawartosc obiektu "Li" na pewno nie ulegnie zmianie, gdyz w zapowiedzi
definicji funkcji znajduje sie modyfikator "const". Bez niego nie ma
juz takiej gwarancji
KoniecOpisu
106 OpisPytania
... dla wywolania:
int main()
{
KlasaLiczby Li;
Dzialaj(Li);
}
Zawartosc obiektu "Li" na pewno nie ulegnie zmianie, gdyz obiek przkazywany
jest do funkcji poprzez wartosc.
KoniecOpisu
107 OpisPytania
... dla wywolania:
int main()
{
KlasaLiczby Li;
Dzialaj(Li);
}
W trakcie wywolania funkcji obiekt "Li" jest kopiowany.
KoniecOpisu
108 OpisPytania
... dla wywolania:
int main()
{
KlasaLiczby Li;
Dzialaj(Li);
}
W wartosc obiektu "Li" nie ulega zmianie. Ponadto tworzona jest jego kopia,
ktora moze byc modyfikowana wewnatrz funkcji "Dzialaj".
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klasy oraz zapowiedz definicji funkcji:
class KlasaLiczby {
float _Liczba;
public:
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
};
Czy prawda jest, ze ...
KoniecOpisu
109 OpisPytania
... rownowazna definicja tej klasy jest:
struct KlasaLiczby {
float _Liczba;
private:
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
};
KoniecOpisu
110 OpisPytania
... rownowazna definicja tej klasy jest:
struct KlasaLiczby {
float PobierzLiczbe() const { return _Liczba; }
private:
float _Liczba;
public:
float& PobierzLiczbe() { return _Liczba; }
};
KoniecOpisu
111 OpisPytania
... rownowazna definicja tej klasy jest:
class KlasaLiczby {
public:
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
private:
float _Liczba;
};
Jest to zapis zgodny ze standardem ANSI C++.
KoniecOpisu
112 OpisPytania
... rownowazna definicja tej klasy jest:
struct KlasaLiczby {
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
float _Liczba;
};
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klasy
class Wektor {
protected:
float _x, _y;
public:
Wektor(float x, float y) { _x = x; _y = y; }
Wektor Dodaj(const Wektor& W) const;
};
Czy prawda jest, ze ...
KoniecOpisu
113 OpisPytania
... jedna z roznic miedzy sekcja "private", a "protected" polega na tym,
ze w przypadku wystapienia w definicji klasy Wektor sekcji "private"
zamiast "protected" ponizsza definicja metody nie zawsze bylaby poprawna:
Wektor Wektor::Dodaj(const Wektor& W) const
{
return Wektor(_x + W._x, _y + W._y);
}
KoniecOpisu
114 OpisPytania
... rownowazna definicja klasy "Wektor" jest:
class Wektor {
float _x, _y;
public:
Wektor(float x, float y) { _x = x; _y = y; }
Wektor Dodaj(const Wektor& W) const;
};
KoniecOpisu
115 OpisPytania
... w definicji metody "Dodaj", przedstawionej ponizej, mozna
odwolywac sie do pol chronionych innych obiektow tej samej klasy.
Jest to prawdziwe dla dowolnej metody, ktora zdefiniowana bylaby
dla dla klasy "Wektor".
Wektor Wektor::Dodaj(const Wektor& W) const
{
return Wektor(_x + W._x, _y + W._y);
}
KoniecOpisu
116 OpisPytania
... sekcja "protected" nie ma zadnego znaczenia, gdy w metodach
dowolujemy sie do pol, ktore wraz z metodami sa elementami definicji
tej samej klasy. Przykladem moze byc odwolanie sie do pol prywatnych
"_x" i "_y" w konstruktorze klasy "Wektor".
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klasy i deklaracja pola statycznego:
class KlasaLiczby {
protected:
static int _IloscLiczb;
public:
float _Liczba;
KlasaLiczby(): _Liczba() { ++_IloscLiczb; }
~KlasaLiczby() { --_IloscLiczb; }
};
int KlasaLiczby::_IloscLiczb;
Czy prawda jest, ze ...
KoniecOpisu
117 OpisPytania
... po utworzeniu obiektu klasy "KlasaLiczby" pola "_IloscLiczb"
i "_Liczba" beda mialy zawsze rozne wartosci.
KoniecOpisu
118 OpisPytania
... dodanie nowego pola statycznego moze prowadzic do zwiekszenia
rozmiaru obiektu.
KoniecOpisu
119 OpisPytania
... w konstruktorze nie jest inicjalizowane pole "_Liczba". Moze sie
wiec zdarzyc, ze jego wartosc po utworzeniu obiektu bedzie dowolna.
Aczkolwiek zazwyczaj bedzie to wartosc 0.
KoniecOpisu
120 OpisPytania
... w tym przypadku pole statyczne "_IloscLiczb" jest niejawnie
inicjalizowane ta sama wartoscia jak pole "_Liczba".
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klas i zapowiedz definicji funkcji:
class FiguraGeometryczna {
protected:
float _WsplrzednaSrodka_x, _WsplrzednaSrodka_y;
};
class Kwadrat: public FiguraGeometryczna {
public:
float _RozmiarBoku;
};
void Dzialaj( FiguraGeometryczna Fig );
Czy prawda jest, ze ...
KoniecOpisu
121 OpisPytania
... wywolanie funkcji przedstawione ponizej
int main()
{
Kwadrat Kw;
Dzialaj(Kw);
}
moze byc nieprawidlowe, choc nie zawsze to zasygnalizuje kompilator.
Powodem sa rozne typy obiektu i parametru formalnego.
KoniecOpisu
122 OpisPytania
... wywolanie funkcji przedstawione ponizej
int main()
{
Kwadrat Kw;
Dzialaj(Kw);
}
niezaleznie od definicji funkcji "Dzialaj" nigdy nie spowoduje ona
zadnych zmian w obiekcie "Kw".
KoniecOpisu
123 OpisPytania
... wywolanie funkcji przedstawione ponizej
int main()
{
Kwadrat Kw;
Dzialaj(Kw);
}
do funkcji "Dzialaj" przekazywana jest kopia podobiektu
klasy "FiguraGeomtryczna", ktory zawarty jest w obiekcie
klasy "Kwadrat".
KoniecOpisu - sprawdzane z dr Kreczmerem
124 OpisPytania
... wywolanie funkcji przedstawione ponizej
int main()
{
Kwadrat Kw;
Dzialaj(Kw);
}
w zaleznosci od definicji funkcji "Dzialaj" mozna odwolac sie
do obiektu "Kw", choc nie bedzie go mozna zmienic.
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dana definicja klas i zapowiedz definicji funkcji:
class Liczba {
public:
Liczba() { _wLiczba = new float; }
~Liczba() { delete _wLiczba; }
Liczba& operator = (const Liczba& L);
private:
float *_wLiczba;
};
Liczba& Liczba::operator = (const Liczba& L)
{
*_wLiczba = *L._wLiczba;
return *this;
}
Czy prawda jest, ze ...
KoniecOpisu
125 OpisPytania
... dla kodu przedstawionego ponizej
int main()
{
Liczba L1;
Liczba L2 = L1;
}
operacja przypisania wartosci L1 do L2 zostanie wykonana poprawnie
dzieki przeciazeniu operatora "=". Niemniej uzycie niektorych
kompilatorow, ktore nie sa w pelni zgodne z ANSI C++ moze powodowac
bledne wykonanie programu.
KoniecOpisu
126 OpisPytania
... dla kodu przedstawionego ponizej
int main()
{
Liczba *wL = new Liczba;
Liczba L1 = *wL;
}
operacja tworzenia obiektu L1 nie wykorzystuje konstruktora
bezparametrycznego, ani tez przeciazenia operatora "=".
KoniecOpisu
127 OpisPytania
... dla kodu przedstawionego ponizej
int main()
{
Liczba *wL = new Liczba;
Liczba L1 = *wL;
}
przedstawiona konstrukcja jest prawidlowa i destrukcja obiektow
przebiegnie bez zadnych bledow. Byloby jednak lepiej, aby jawnie
usuwac obiekt *wL poprzez uzycie operatora "delete", tzn.
delete wL;
KoniecOpisu
128 OpisPytania
... konstrukcja klasy nie zapewnia poprawnego dzialania
programu w przypadku poslugiwania sie funkcjami z parametrami
klasy "Liczba" przekazywanymi przez wartosc, np.
void Dzialaj( Liczba L )
{
...
}
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
class Klasa {
int _Kod;
public:
const Klasa& Metoda1() const { return *this; }
Klasa& Metoda2() { return *this; }
const Klasa& Metoda3() { return *this; }
};
Czy prawda jest, ze ...
KoniecOpisu
129 OpisPytania
... ze ponizszy ciag wywolan
int main()
{
Klasa Ob;
Ob.Metoda1().Metoda2().Metoda3();
}
jest niepoprawny, gdyz metode mozna wywolywac tylko dla
obiektu, a nie wyniku zwracanego przez inna metode.
KoniecOpisu
130 OpisPytania
... ze ponizszy ciag wywolan
int main()
{
Klasa Ob1;
const Klasa Ob2;
Ob2 = Ob1.Metoda2();
}
doprowadzi do sytuacji, ze zmiennej "Ob2" znajdzie sie obiekt,
ktory bedzie modyfikowalny.
KoniecOpisu
131 OpisPytania
... ze dla ponizszego ciagu wywolan
int main()
{
Klasa Ob;
const Klasa &Ref_Ob = Ob;
Ref_Ob.Metoda1();
Ob.Metoda2();
}
zarowno "Metoda1" jak tez "Metoda2" zwraca referencje do tego samego
obiektu.
KoniecOpisu
132 OpisPytania
... ze dla ponizszego ciagu wywolan
int main()
{
Klasa Ob1;
Klasa Ob2;
Ob1.Metoda2() = Ob2.Metoda1();
}
po wykonaniu tej operacji zawartosc obu obiektow bedzie jednakowa.
KoniecOpisu
133 OpisPytania
... ze dla ponizszego ciagu wywolan
int main()
{
Klasa Ob1;
Klasa Ob2;
Ob2.Metoda1() = Ob1.Metoda2();
}
po wykonaniu tej operacji zawartosc obu obiektow bedzie jednakowa.
KoniecOpisu
134 OpisPytania
... ze ponizszy ciag wywolan
int main()
{
Klasa Ob;
Ob.Metoda1().Metoda2().Metoda3();
}
jest niepoprawny, gdyz metode modyfikujaca obiekt
mozna wywolywac tylko dla obiektu modyfikowalnego.
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
int main()
{
try {
throw std::cout;
}
catch (std::ostream& OStrm) {
cout << "Obsluga: 1" << endl;
}
catch (std::istream& OStrm) {
cout << "Obsluga: 2" << endl;
}
}
Czy prawda jest, ze ...
KoniecOpisu
KILKASET STRON NA TEMAT: http://books.google.com/books?id=nnRog4I-3jwC&pg=PA36&lpg=PA36&dq=streams+exceptions+cout&source=bl&ots=KBB32yOSlT&sig=W-tjglchYbh6GJ_iHE39nIPdMg4&hl=pl&ei=fvMeSszQGo_KjAeYvLm3DQ&sa=X&oi=book_result&ct=result&resnum=1
ale i tak nie dam sobie niczego uciąć za te odpowidzi
135 OpisPytania
... zapis jest niepoprawny, gdyz nie mozna zglaszac jako wyjatkow
obiektow z biblioteki standardowej.
KoniecOpisu-można wysłać wyjątek throw &cout; i złapać go np. catch(...){}
136 OpisPytania
... zapis jest niepoprawny, gdyz strumieni nie mozna przekazywac
do metod poprzez wartosc.
KoniecOpisu ://założywszy, że catch() to nie jest metoda
137 OpisPytania
... zapis jest niepoprawny, gdyz jako wyjatku nie mozna zglaszac
w jakiejkolwiek formie strumienia standardowego, tzn. bezposrednio
jako obiekt lub posrednio poprzez zmienne referencjna lub wskaznik.
KoniecOpisu-można wysłać wyjątek throw &cout; i złapać go np. catch(...){}
138 OpisPytania
... mozliwa jest modyfikacja zgloszenia obiektu std::cout bez
wprowadzania dodatkowych definicji klas, tak aby ktoras z
istniejacych sekcji "catch" przechwycila go.
KoniecOpisu // potwierdzone przez dr K.
OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
class FiguraGeometryczna {
public:
double _Pole;
};
class Kwadrat: public FiguraGeometryczna {
public:
double _DlugoscBoku;
};
Czy prawda jest, ze ...
KoniecOpisu
139 OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w gore".
int main()
{
Kwadrat Kw;
FiguraGeometryczna *wFig = &Kw;
}
KoniecOpisu
140 OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w dol".
int main()
{
Kwadrat Kw;
FiguraGeometryczna *wFig = &Kw;
}
KoniecOpisu
141 OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w dol".
int main()
{
FiguraGeometryczna Fig;
Kwadrat *wKw = &Fig;
}
KoniecOpisu
142 OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w gore".
int main()
{
FiguraGeometryczna Fig;
Kwadrat *wKw = &Fig;
}
KoniecOpisu
143 OpisPytania
... w przedstawionym ponizej zapisie poprzez zmienna "Fig" mamy dostep
do podobiektu znawartego w obiekcie "Kw".
int main()
{
Kwadrat Kw;
FiguraGeometryczna &Fig = Kw;
}
KoniecOpisu
144 OpisPytania
... w przedstawionym ponizej zapisie poprzez zmienna "Fig" mamy dostep
do podobiektu znawartego w obiekcie "Kw".
int main()
{
Kwadrat Kw;
FiguraGeometryczna Fig = Kw;
}
KoniecOpisu
145 OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
class FiguraGeometryczna {
public:
double _Pole;
double ObliczPole() { return _Pole; }
};
class Kwadrat: public FiguraGeometryczna {
public:
double _DlugoscBoku;
double ObliczPole(double Skala)
{ return pow(Skala*_DlugoscBoku,2); }
};
Czy prawda jest, ze ...
KoniecOpisu
146 OpisPytania
... ponizszy zapis jest nieprawidlowy i nie ma sposobu, aby
nie modyfikujac definicji klas i dysponujac obiektem klasy
"Kwadrat" odwolac sie do metody "ObliczPole()" z klasy
"FiguraGeometryczna".
int main()
{
Kwadrat Kw;
Kw.ObliczPole();
}
KoniecOpisu
147 OpisPytania
... ponizszy zapis jest nieprawidlowy. Dysponujac referencja do
obiektu klasy "FiguraGeometryczna" i nie dokonujac zadnych
rzutowan mozna odwolac sie tylko do metody "ObliczPole()",
a nie "ObliczPole(double)".
int main()
{
Kwadrat Kw;
FiguraGeometryczna &Fig = Kw;
Fig.ObliczPole(1.0);
}
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
class FiguraGeometryczna {
double _Pole;
double ObliczPole() { return _Pole; }
public:
};
class Kwadrat: public FiguraGeometryczna {
double _DlugoscBoku;
public:
double ObliczPole(double Skala)
{ return pow(Skala*_DlugoscBoku,2); }
};
Czy prawda jest, ze ...
KoniecOpisu
148 OpisPytania
... ponizszy zapis jest nieprawidlowy i nie ma sposobu, aby
dysponujac obiektem klasy "Kwadrat" odwolac sie do
metody "ObliczPole()" z klasy "FiguraGeometryczna".
int main()
{
Kwadrat Kw;
Kw.ObliczPole();
}
KoniecOpisu
OpisPytania
149 ... ponizszy zapis jest nieprawidlowy. Dysponujac referencja do
obiektu klasy "FiguraGeometryczna" i dokonujac rzutowan mozna
odwolac sie tylko do metody "ObliczPole(double)", a nie "ObliczPole()".
int main()
{
Kwadrat Kw;
FiguraGeometryczna &Fig = Kw;
Fig.ObliczPole();
}
KoniecOpisu(?)
150 OpisPytania
... ponizszy zapis jest nieprawidlowy. Dysponujac referencja do
obiektu klasy "FiguraGeometryczna" i nie dokonujac zadnych
rzutowan mozna odwolac sie tylko do metody "ObliczPole()",
a nie "ObliczPole(double)".
int main()
{
Kwadrat Kw;
FiguraGeometryczna &Fig = Kw;
Fig.ObliczPole(1.0);
}
KoniecOpisu
OpisProblemu ====================================================
Niech beda dane prototypy dwoch funkcji:
void Wylicz( float Param1, double Param2 );
void Wylicz( double Param1, float Param2 );
Zakladajac, ze w programie znajduja sie poprawne ich definicje
i ze nie ma innego przeciazenia funcji "Wylicz",
czy prawda jest, ze ...
KoniecOpisu
151 OpisPytania
... w funkcji main przedstawionej ponizej:
int main()
{
Wylicz(1.2, 'c');
}
na ogol zostanie wywolana druga z przedstawionych funkcji,
tzn. Wylicz( double Param1, float Param2 );
Zalezy to jednak od kompilatora i od domyslnej interpretacji
uzytej w liscie parametrow stalej liczbowej.
Tak bedzie, o ile kompilator jest zgodny z norma ANSI C++.
KoniecOpisu
152 OpisPytania
... w funkcji main przedstawionej ponizej:
enum PoryRoku { Wiosna, Lato, Jesien, Zima };
int main()
{
Wylicz( Wiosna , 1.2);
}
zostanie wywolana pierwsza z przedstawionych funkcji,
tzn. Wylicz( float Param1, double Param2 );
O wywolaniu tej funkcji decyduje uzyta stala liczbowa.
Tak bedzie, o ile kompilator jest zgodny z norma ANSI C++.
KoniecOpisu