Nazwisko: grupa:
1. Niech będzie dana klasa wektor zdefiniowana:
class wektor {
int *x, *y, *z;
public:
wektor ...
}
Napisać:
Konstruktor przydzielający pamięć dla wektora oraz inicjujący wartości x, y, z.
Funkcję operatorową = umożliwiającą kopiującej wartości współrzędnych wektora,
Funkcję operatorową << wypisującą wektor w postaci [ x y z] np. [3 3 6]
2. Dana jest klasa
class osoba
{
public:
char naz[20];
int wiek ;
osoba();
void wypisz(void); };
Zdefiniuj wskaźnik pokazujący wewnątrz klasy na wiek oraz naz[]
Zdefiniuj wskaźnik pokazujący wewnątrz klasy na funkcję wypisz()
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);
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?
4. Zdefiniuj szablon do tworzenia tablic dynamicznych.
a) Zdefiniuj konstruktor, destruktor oraz funkcje szukania maksimum w tablicy.
b) Zdefiniuj klasę specjalizowaną dla typu char * (nie definiować funkcji składowych , tylko deklaracje)
Definicje wszystkich funkcji poza klasą.
5. Dany jest wzorzec
template <class T>
class macierz
{
T *wsk;
int m, n;
public:
macierz(int i, int j);
macierz(const macierz &r);
macierz(T k);
~macierz();
macierz & operator =(const macierz &r);
............... };
int main()
{ macierz<float> a(3, 3), b(2, 2), c(2, 2);
cout << a[2][1]; // Napisz funkcje operatorową [ ] .
return 0; }
6. Dana jest klasa punkt
class punkt {
int x, y ;
public:
punkt (int i; int j);
punkt (const punkt &); };
Zdefiniuj klasę kwadrat dziedziczącą po punkcie oraz zdefiniuj tylko konstruktor klasy kwadrat (podpowiedź: zwróć uwagę na konstruktory klasy punkt)