You are on page 1of 6

polygon &polygon::operator=(const polygon &a) {

if (this != &a) {
this->n = a.n;
this->points = a.points; Odp. Przeciążenie operatora przypisania “=”.
this->order = order;
}
return *this;
}

Nie zadziała ponieważ przy deklaracji funkcji jest tworzony nowy int, którego
żywot zakończy zamknięcie tej funkcji przez co nie będzie można zwrócić
referencji.

double &x() { return x.x(); };


double const &x() const { return x.x(); };
Są to metody dostępowe. Górna można modyfikować pole w klasie, a druga u
dołu powinna zwracać tylko pole w klasie ponieważ const przy metodzie
oznacza deklaracje, że metoda nie modyfikuje składowych klasy.
const A operator*( const double& l, const A& pt )
{
return A(pt[0] * l, pt[1]*l);
}
ODPOWIEDZI POWYŻEJ NIE ZALICZYŁ

Dana jest klasa:


class A{
int b;
};
W jaki sposób można prawidłowo zrealizować możliwość zmiany warości pola
b obiektów tej klasy - podaj przykład.
ODP. Metodą dostępową - public: int& funkcja() { return b; } ;

Zadeklaruj klase A i B gdzie klasa A jest klasą bazowa, kazda klasa posiada
jeden obiekt(??? chuj wie jak to leciało)
class A{
int a;
};
class B : public A{
int b;
};
Konstruktory jednoarguentowe do tych klas:
B(int x, int xx):A(x),b(xx){}
A(int x):a(x){}

Klasa abstrakcyjna definicja od Jacy:


Niepełna klasa bazowa, która staje się mniej lub bardziej ukończoną w wyniku
każdego kolejnego dziedziczenia po niej przez inną klasę. Służy po to by z niej
dziedziczyć.
• stanowi wyłącznie interfejs dla swoich klas pochodnych,
• nie daje możliwości tworzenia obiektów tej klasy

a2 = a1; Wywołano operator przypisania. Nie musisz go definiować. Zadziała


mechanizm kopiowania składowa po składowej.

cout << 3.14 * p2 << endl;


cout << p2 * 3.14 << endl;
Przeciazenie operatora mnozenia. Przy przeciążaniu * rozróżnia się lewą i
prawą stronę przez co nie jest przemienne.

Dana jest klasa:


class A{
int x[3];
public:
int& operator[](unsigned);
};

int& A::operator[](unsigned i){return &x[i];}


- Zwraca referencje do int
friend int& operator[](unsigned i){return x[i];}
- Nie bo powinny być dwa argumenty jeśli jest friend
int& A::operator[](unsigned i){return x[i];}
- Nie bo zwraca wskaznik do elementu tablicy
A& A::operator[](unsigned i){return this[i];}
- Nie bo zwraca obiekt klasy A a nie int

Która z poniższych definicji klasy nie zawiera błędu?


Należy uzasadnić na czym polegają błędy w pozostałych przypadkach.

- class A { A *b; A tab[5] ; }; - nie ma zadeklarowanej nazwy zmiennej


- class A {&A a;}; - nie może być bo referencja jest przed typem zmiennym
- class A { A *a; int *i; }; - Prawidłowe
- class A { A a; int *i; }; - Klasa A nie moze miec pol typu a bo by była nieskonczenie
wielka

Który z poniższych schematów poprawnie organizuje


kod programu do obsługi wyjątku typu int:

- try{ } catch(int) { }
- int{ } try(catch) { }
- case{ try } catch {int}
- try{ catch } case{ try(int); }
osoba *w = &os;
w->pokaz();
w = &pr3;
w->pokaz();
static_cast<pracownik *>(w)->pokaz();
- stworzenie wskaźnika do obiektu osoba który jest wskaźnikiem na os

Proszę zdefiniować obiekt typu A i B oraz kod realizujący modyfikację pola b


dla obiektów klasy A i struktury B.
class A{ int b; };
struct B{ int b; };
A a1; - Utworzenie obiektu typu A
B b1; - Utworzenie obiektu typu B
int &getB() { return this->b; } - Metoda dostępowa do klasy A
a1.getB() = 5; - Modyfikowanie b w klasie A
b1.b = 6; - Modyfikowanie b w strukturze B

A a1;
B b1;
int &getB() { return this->b; }
a1.getB() = 5;
b1.b = 6;

class A {
int x;
public:
A(): x(0){}
A(int _x): x(_x){}
};
A *a = new A[3]; - Zostanie wywołany konstruktor - A(): x(0){}
- Tworzy 3 elementowy obiekt klasy A której domyślnymi wartościami
będą 0

Jaka będzie wartość zmiennej d po wykonaniu następujących


instrukcji :
int t[] = {11, 22, 33, 44};
int d = &t[3] - t; Odp. 3

You might also like