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
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu
NIE
OpisPytania
... nic sie nie pojawi, gdyz program zawiera blad.
KoniecOpisu
TAK
OpisPytania
... nic sie nie pojawi, gdyz dla strumieni operacja przypisania
nie jest dozwolona.
KoniecOpisu
TAK
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
NIE
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
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu TAK
OpisPytania
... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
Jednak program moze spowodowac blad wykonania,
gdyz operacje tego typu nie sa dozwolone.
KoniecOpisu NIE
OpisPytania
... moze powstac blad, aczkolwiek nie musi,
gdyz "strumien2" jest referencja do referencji.
KoniecOpisu NIE
OpisPytania
... operujac na zmiennych referencyjnych "strumien1" i "strumien2",
wykonujemy operacje na strumieniu wyjscia standardowego reprezentowanym
przez obiekt "cout".
KoniecOpisu TAK
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
OpisPytania
... w programie wystepuje niezgodnosci typow w podstawieniu:
FiguraGeom *wFig = wKwd;
W tym przypadku nie jest mozliwe niejawne rzutowanie "w gore".
KoniecOpisu NIE
OpisPytania
... na ekranie pokaze sie napis:
Kwadrat
Jest to wynik dzialania metody "Wyswietl" z klasy "Kwadrat".
KoniecOpisu TAK
OpisPytania
... ponizsze podstawienie moze spowodowac blad.
FiguraGeom *wFig = wKwd;
Powodem jest wystepowanie metod wirtualnych w definicjach klas.
KoniecOpisu NIE
OpisPytania
... obiekt klasy "Kwadrat" zawiera w sobie obiekt klasy "FiguraGeom".
KoniecOpisu TAK
OpisPytania
... domyslne destruktory dla klas "FiguraGeom" i "Kwadrat" nie sa
destruktorami wirtualnymi.
KoniecOpisu TAK
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
... zapis programu jest prawidlowy i destrukcja obiektu przebiegnie wlasciwie.
W tym przypadku brak slowa kluczowego "virtual" przed destruktorem klasy "KlasaB"
nie ma zadnego znaczenia.
KoniecOpisu TAK
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 NIE
OpisPytania
... destruktor klasy "KlasaB" jest destruktorem wirtualnym mimo
braku slowa kluczowego "virtual".
KoniecOpisu NIE
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 NIE
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
... w programie w linii:
KlasaB *wObiektB = wObiektA;
wystepuje niedozwolona proba rzutowania "w dol".
KoniecOpisu TAK
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 TAK
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 NIE
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 NIE
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
... wykonana zostanie metoda z klasy "KlasaA". Jest ona metoda
wirtualna, co wynika z definicji metody o tej samej nazwie
w klasie "KlasaB".
KoniecOpisu NIE
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 TAK
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
... operacja porownania wskaznikow jest poprawna. Regula ta obejmuje wszystkie
przypadki tego typu niezaleznie od zlozonosci wewnetrznej struktury obiektu
i podobiektu.
KoniecOpisu TAK
OpisPytania
... operacja ta da wlasciwy wynik tylko i wylacznie wtedy, gdy w klasach
beda zdefiniowane destruktory wirtualne.
KoniecOpisu NIE
OpisPytania
... w tym przypadku zachodzi rownosc tylko i wylacznie ze wzgledu
na to, ze klasa "KlasaA" jest bezposrednio dziedziczona przez
klase "KlasaB".
KoniecOpisu NIE
OpisPytania
... operacja porownania powoduje niejawne rzutowanie zawartosci zmiennej
wskaznikowej "wObiektB" na wskaznik typu: KlasaA*
KoniecOpisu NIE
OpisPytania
... w programie wykorzystane jest niejawne rzutowanie wskaznikow.
W tym przypadku niejawne rzutowanie nie jest zwiazane z hierarchia
dziedziczenia klas.
KoniecOpisu TAK
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
... 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 TAK
OpisPytania
... po wykonaniu tego kodu zawsze zachodzi warunek:
Tab[1] == Tab[5]
KoniecOpisu NIE
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
... po wykonaniu tego kodu zawsze zachodzi warunek:
&Zm == &Tab[1]
KoniecOpisu NIE
OpisPytania
... po wykonaniu tego kodu zawsze zachodzi warunek:
Zm == Tab[1]
KoniecOpisu NIE
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
OpisPytania
... w podstawieniu przedstawionym ponizej
Lst.back()[1] = 5;
nastepuje proba modyfikacji drugiej skladowej wektora,
ktory jest piatym elementem listy?
KoniecOpisu TAK
OpisPytania
... wszystkie wektory wchodzace w sklad utworzonej listy maja
rozmiar zerowy (tzn. metoda size() w ich przypadku zwraca 0).
KoniecOpisu TAK
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
... wykonane podstawienie spowoduje utworzenie drugiej skladowej
w ostatnim wektorze listy 'Lst'.
KoniecOpisu NIE
OpisPytania
... zmienna 'Lst' reprezentuje liste wektorow, ktore maja
po piec skladowych.
KoniecOpisu NIE
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
... po wykonaniu ostatniego dzialania zmienna 'Liczba' zawierac
bedzie wartosc 10.
KoniecOpisu NIE
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 TAK
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 TAK
OpisPytania
... w funkcji 'main' wystepuje wywolanie konstruktora
klasy 'Wektor2f' oraz jedna niejawna konwersja
obiektu klasy 'Wektor2f' do zmiennej typu float.
KoniecOpisu TAK
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
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[2].size() == TabWekt[3].size()
KoniecOpisu TAK
OpisPytania
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[0].size() == TabWekt[3].size()
KoniecOpisu NIE
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
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[0].size() == Lst.size()
KoniecOpisu TAK
OpisPytania
... po wykonaniu tego kodu prawdziwy bedzie warunek:
TabWekt[3].size() == Lst.size()
KoniecOpisu NIE
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
... wskaznik "wskA" zawiera adres pierwszego elementu
dostepnego poprzez obiekt "Wekt"?
KoniecOpisu TAK
OpisPytania
... wskaznik "wskB" zawiera adres ostatniego elementu
dostepnego poprzez obiekt "Wekt"?
KoniecOpisu NIE
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
... do drugiego elementu listy mozna odwolac sie w nastepujacy sposob:
*++Lst.begin();
KoniecOpisu TAK
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 NIE
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
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( KlasaPochodna() );
KoniecOpisu TAK
OpisPytania
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( new KlasaPochodna() );
KoniecOpisu NIE
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
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( *static_cast<KlasaBazowa*>(&KlasaPochodna()) );
KoniecOpisu NIE
OpisPytania
... ponizej zaprezentowane wywolanie funkcji jest prawidlowe?
funkcja( KlasaBazowa() );
KoniecOpisu NIE
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
... 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 TAK
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 NIE
OpisProblemu ====================================================
Dana jest nastepujaca deklaracja zmiennych:
int kk, &ll=kk, &mm=ll;
KoniecOpisu
OpisPytania
Czy po wykonaniu nastepujacych operacji:
kk=2;
ll=5;
mm=7;
zmienna kk bedzie miala wartosc 7 ?
KoniecOpisu TAK
OpisPytania
Czy spelniony jest ponizszy warunek?
&kk == &mm
KoniecOpisu TAK
OpisProblemu ====================================================
Nastepne pytanie dotyczyc bedzie referencji i zmiennych referencyjnych:
KoniecOpisu
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 TAK
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 NIE
OpisProblemu ====================================================
Pytanie dotyczyc bedzie przeciazania funkcji i metod.
KoniecOpisu
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 NIE
OpisPytania
Czy prawdziwe jest stwierdzenie, ze w jezyku C++ mozna przeciazac
funkcje, a nie mozna przeciazac operatorow arytmetycznych
poza obrebem (definicji) danej klasy?
KoniecOpisu NIE
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 TAK
OpisProblemu ====================================================
Pytanie dotyczyc bedzie hermetyzacji danych i metod
oraz funkcji zaprzyjaznionych
KoniecOpisu
OpisPytania
Czy hermetyzacja komponentow klasy (pol lub metod) ma na
celu zabezpieczenie ich przed modyfikacja lub wywolaniem przez
inne metody tej samej klasy?
KoniecOpisu NIE
OpisPytania
Czy metody prywatne (private) i chronione (protected) klasy
dostepne sa dla funkcji zaprzyjaznionych z ta klasa?
KoniecOpisu TAK
OpisPytania
Czy dozwolona jest modyfikacja pol prywatnych danej
klasy w funkcjach zaprzyjaznionych z ta klasa?
KoniecOpisu TAK
OpisProblemu ====================================================
Pytanie dotyczyc bedzie konstruktorow i destruktorow.
KoniecOpisu
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 NIE
OpisPytania
Czy jedna z operacji powodujacej niejawne wywolanie
konstruktora danej klasy jest dynamiczna alokacja
obiektu tejze klasy za pomoca operatora "new" ?
KoniecOpisu TAK
OpisPytania
Czy destruktory sa zawsze wywolywane niejawnie w przypadku
dla zmiennych statycznych, gdy sterowanie osiagnie koniec
zakresu waznosci deklaracji danego obiektu.
KoniecOpisu NIE
OpisProblemu ====================================================
Pytanie dotyczyc bedzie konstruktorow i destruktorow.
KoniecOpisu
OpisPytania
Czy prawda jest, ze:
Destruktor powinien miec taka sama
liste parametrow w wywolaniu jak konstruktor.
KoniecOpisu NIE
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 TAK
OpisProblemu ====================================================
Czy konstruktor ...
KoniecOpisu
OpisPytania
... jest metoda skladowa klasy, ktora
zawsze inicjalizuje pola tej klasy?
KoniecOpisu NIE
OpisPytania
... ma taka sama nazwe jak nazwa klasy i
moze byc wywolany jawnie jak kazda metoda.
KoniecOpisu TAK
OpisPytania
... moze byc zadeklarowany w ponizszy sposob:
class Klasa {
Klasa(Klasa);
public:
};
KoniecOpisu NIE
OpisProblemu ====================================================
Czy przciazanie metod klasy ...
KoniecOpisu
OpisPytania
... jest mozliwe tylko poza sekcja chroniona (protected) danej klasy.
KoniecOpisu NIE
OpisPytania
... jest zabronione w przypadku destruktora.
KoniecOpisu TAK
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 NIE
OpisProblemu ====================================================
Niech bedzie dana definicja:
int numer::funkcja(int i)
{
...
}
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... moze to byc definicja metody dla klasy lub struktury lub unii
lub tez unii o nazwie "numer"?
KoniecOpisu NIE
OpisPytania
jezeli jest to metoda klasy "numer", to jej definicja
jest umieszczona na pewno poza blokiem definicji tej klasy?
KoniecOpisu TAK
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
... Obiekt 'ob' nie bedzie mogl byc utworzony ze wzgledu na brak
konstruktora parametrycznego?
KoniecOpisu TAK
OpisPytania
... zapis jest poprawny i dziedziczone pole '_Pole'
zostanie zainicjalizowane wartoscia 2?
KoniecOpisu NIE
OpisPytania
... zapis jest poprawny, jednak pole o nazwie "_Pole" klasy "KlasaA"
nie bedzie dostepne z poziomu klasy pochodnej ("KlasaB")?
KoniecOpisu NIE
OpisProblemu ====================================================
Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:
class KlasaA {
public:
int _Pole;
};
const KlasaA Ob;
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby
w klasie zostal zadeklarowany konstruktor bezparametryczny,
np.
class KlasaA {
public:
int _Pole;
KlasaA() {}
};
KoniecOpisu TAK
OpisPytania
... obiekt nie jest inicjalizowany, tak wiec nie moze byc zadeklarowany jako staly.
KoniecOpisu TAK
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 NIE
OpisPytania
... powyzsza deklaracja obiektu 'Ob' bylaby poprawna, gdyby
pole '_Pole' zostalo zadeklarowane jako statyczne,
tzn.:
class KlasaA {
public:
static int _Pole;
};
KoniecOpisu NIE
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 TAK
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
OpisPytania
... ze wzgledu na to, iz obiekt 'Ob' jest zadeklarowny jako staly,
to obie operacje przypisania w funkcji 'main' sa niepoprawne.
KoniecOpisu NIE
OpisPytania
... obie operacje przypisania w funkcji "main" mozna zrealizowac
pod warunkiem wykonania rzutowania za pomoca operatora static_cast.
KoniecOpisu NIE
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 NIE
OpisProblemu ====================================================
Mamy zdefiniowana klase "KlasaX" oraz zdeklarowany jest obiekt Ob:
class KlasaX {
public:
int _Pole;
};
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... w klasie tej istnieje tylko jeden domyslny konstruktor. Jest nim konstruktor
bezparametryczny.
KoniecOpisu NIE
OpisPytania
... w klasie tej istnieja co najmniej trzy domyslne konstruktory.
KoniecOpisu NIE
OpisPytania
... w klasie tej istnieja co najmniej dwa domyslne konstruktory.
KoniecOpisu TAK
OpisPytania
... w klasie tej istnieje konstruktor bezparametryczny.
KoniecOpisu TAK
OpisProblemu ====================================================
Mamy zdefiniowana klase "KlasaA" oraz zdeklarowany jest obiekt Ob:
class KlasaA {
public:
int _Pole;
};
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... w tej klasie nie ma zdefiniowanego zadnego konstruktora,
z tego powodu nie ma rowniez konstruktorow domyslnych.
KoniecOpisu NIE
OpisPytania
... w tej klasie istnieja co najmniej trzy konstruktory domyslne.
KoniecOpisu NIE
OpisPytania
... w tej klasie istnieje konstruktor domyslny odpowiedzialny za
kopiowanie obiektu.
KoniecOpisu TAK
OpisPytania
... mozna utworzyc obiekt tej klasy wywolujac konstruktor
bezparametryczny.
KoniecOpisu TAK
OpisProblemu ====================================================
Mamy zdefiniowana klase "FiguraGeom" oraz zdeklarowany jest obiekt Ob:
class FiguraGeom {
public:
double _Obwod;
FiguraGeom(): _Obwod() {}
};
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... w tej klasie zdefiniowanie konstruktora bezparametrycznego powoduje
uniewaznienie domyslnego konstruktora kopiujacego.
KoniecOpisu NIE
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 TAK
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 TAK
OpisPytania
... w tej klasie oprocz zdefiniowanego konstruktora bezparametrycznego
istnieja jeszcze co najmniej dwa domyslne konstruktory.
KoniecOpisu NIE
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
OpisPytania
... metody "Re()" oraz "Im()" nie sa przeciazone, gdyz zwracaja rozny typ
wartosci.
KoniecOpisu NIE
OpisPytania
... niezaleznie od sposobu utworznia obiektu tej klasy nie mozna
zmienic jego zawartosci.
KoniecOpisu TAK
OpisPytania
... dla kodu przedstawionego ponizej zostanie wywolana metoda
"float LiczbaZespolona::Re() const".
float Odczyt(LiczbaZespolona& Z)
{
cout << Z.Re();
}
KoniecOpisu NIE
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 NIE
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
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
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
OpisPytania
... dla wywolania:
int main()
{
KlasaLiczby Li;
Dzialaj(Li);
}
W trakcie wywolania funkcji obiekt "Li" jest kopiowany.
KoniecOpisu
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
OpisPytania
... rownowazna definicja tej klasy jest:
struct KlasaLiczby {
float _Liczba;
private:
float PobierzLiczbe() const { return _Liczba; }
float& PobierzLiczbe() { return _Liczba; }
};
KoniecOpisu
OpisPytania
... rownowazna definicja tej klasy jest:
struct KlasaLiczby {
float PobierzLiczbe() const { return _Liczba; }
private:
float _Liczba;
public:
float& PobierzLiczbe() { return _Liczba; }
};
KoniecOpisu
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
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
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
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
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
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
OpisPytania
... po utworzeniu obiektu klasy "KlasaLiczby" pola "_IloscLiczb"
i "_Liczba" beda mialy zawsze rozne wartosci.
KoniecOpisu
OpisPytania
... dodanie nowego pola statycznego moze prowadzic do zwiekszenia
rozmiaru obiektu.
KoniecOpisu
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OpisPytania
... zapis jest niepoprawny, gdyz nie mozna zglaszac jako wyjatkow
obiektow z biblioteki standardowej.
KoniecOpisu
OpisPytania
... zapis jest niepoprawny, gdyz strumieni nie mozna przekazywac
do metod poprzez wartosc.
KoniecOpisu
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
OpisPytania
... mozliwa jest modyfikacja zgloszenia obiektu std::cout bez
wprowadzania dodatkowych definicji klas, tak aby ktoras z
istniejacych sekcji "catch" przechwycila go.
KoniecOpisu
OpisProblemu ====================================================
Niech bedzie dany nastepujacy fragment kodu
class FiguraGeometryczna {
public:
double _Pole;
};
class Kwadrat: public FiguraGeometryczna {
public:
double _DlugoscBoku;
};
Czy prawda jest, ze ...
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w gore".
int main() {
Kwadrat Kw;
FiguraGeometryczna *wFig = &Kw; }
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w dol".
int main() {
Kwadrat Kw;
FiguraGeometryczna *wFig = &Kw; }
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w dol".
int main() {
FiguraGeometryczna Fig;
Kwadrat *wKw = &Fig; }
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie wystepuje niejawne rzutowanie
"w gore".
int main() {
FiguraGeometryczna Fig;
Kwadrat *wKw = &Fig; }
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie poprzez zmienna "Fig" mamy dostep
do podobiektu znawartego w obiekcie "Kw".
int main() {
Kwadrat Kw;
FiguraGeometryczna &Fig = Kw; }
KoniecOpisu
OpisPytania
... w przedstawionym ponizej zapisie poprzez zmienna "Fig" mamy dostep
do podobiektu znawartego w obiekcie "Kw".
int main() {
Kwadrat Kw;
FiguraGeometryczna Fig = Kw; }
KoniecOpisu
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
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
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
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
... 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
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
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
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