Nazwisko: grupa:
1. Dana jest klasa
class string
{ int roz ; // długość napisu
char *wsk;
public:
string(char n[]);
operator int () {return int;}
operator char * () {return wsk;}
};
Które z poniższych instrukcji są nieprawidłowe i dlaczego (określ konwersje)
string s1(”ASDFG”)
void fun1 (float ) {//detale } ; fun1 (s1);
void fun3 (int k) {//detale } ; void fun3 (cha* k) {//detale } ; fun3 (s1);
c) napisz funkcje/konstruktor konwertujący dla void fun4 (char k); - fun 4 (s1)
d) Ponadto przeprowadzić następujące eksperymenty i zinterpretować wyniki.
- Dane sa konwersje zdefiniowane przez użytkownika: X −-> Y , Y −> Z. Czy istnieje niejawna
konwersja X −> Z?
- Dana jest konwersja X −> float. Czy istnieje konwersja X −> int?
- Dane sa konwersje: X −> float, X −> int, X −> char. Czy poprawna jest instrukcja
cout<<x<<endl, gdzie x jest obiektem klasy X?
2. class punkt {
int x, y ;
public:
punkt (int i=0; int j=0);
punkt (const punkt &);
punkt & operator =(const punkt &);
friend punkt operator +(const punkt & a, const punkt & b);
friend punkt operator -(const punkt & a, const punkt & b);
operator +=…..
Poza ciałem klasy zdefiniuj:
konstruktory obliczeniowe dla funkcji operator - operator + optymalizujące zwracanie wartości obiektu typu string w funkcjach. Czy te konstruktory obliczeniowe mogą być prywatne?
zdefiniuj funkcje operator += friend
..........operator<< .......... ;
3. a) Zdefinuj wszystkie funkcje szablonu sort tak , aby poniższy kod był prawidłowy (instrukcje w main() były prawidłowe).
template <? >
class sort
{ int * wsk;
public:
void sortuj
{
}
};
int main()
{
sort<int , 20, rosnąco> obiekt1;
sort<int , 30, malejaco> obiekt1;
}
4. Zdefiniuj szablon do tworzenia tablic dynamicznych.
a) Zdefiniuj konstruktor, destruktor oraz funkcje szukania maksimum w tablicy. Napisz funkcje operatorową [ ] .
oraz funkcje operatorową strumienia <<
b) Zdefiniuj klasę specjalizowaną dla typu char * (nie definiować funkcji składowych , tylko deklaracje)
5. Zadeklaruj klasę podstawową punkt2d oraz klasę pochodna punkt 3d;
a) Zadeklaruj klasy wraz ze składnikami i funkcjami virtualnymi umożliwiającymi rysowanie i przesuwanie punktu dwu i trójwymiarowego. Zdefiniuj funkcje globalne: rysuj i przesuń które przyjmują referencje do klasy punkt2d
b) Narysuj model obiektu dla klasy punkt2d i punkt 3d
c) Określ i opisz narzuty czasowe i pamięciowe związane z polimorfizmem (funkcje virtualne).
6. Zdefiniuj wskaźnik ,który może pokazywać na elementy typu int tylko i wyłącznie zawarte w klasie
Zdefiniuj wskaźnik ,który może pokazywać na funkcje składową int *fun (int ) (tylko i wyłącznie na tą funkcję) zawartą w klasie A
Class A{
public:
int a;
char b;
//.........
int *fun (int )
};
Zainicjalizuj wskaźniki.
7. Zdefiniuj klasę punkt z :
z prywatnym składnikiem statycznym _liczba obiektów:
publiczną funkcję statyczną zwracającą wartość składnika statycznego (czym się charakteryzuje)
Zadeklaruj obiekt, wskaźnik do obiektu i napisz wszystkie możliwe wywołania (dostępu do) składnika statycznego i funkcji statycznej.