Jakie są własności funkcji/klas zaprzyjaźnionych?
1. Przyjaźń nie jest dziedziczona.
2. Przyjaźń nie jest przechodnia. Jeśli A jest przyjacielem B oraz B jest przyjacielem C, to A nie jest przyjacielem C, o ile nie zadeklarowaliśmy jawnie inaczej.
3. Przyjaźń nie jest zwrotna. To, że klasa A ma dostęp do prywatnych składowych B nie znaczy, że B ma dostęp do prywatnych składowych A.
Jakich operatorów nie można przeciążać?
Nieprzeciążalnymi operatorami są:
1. . (kropka)
3. ?:
4. :: (operator zakresu)
5. sizeof
Na czym polega „const correctness”?
Polega na ochronie przed celową lub przypadkową zmianą obiektu przy pomocy słowa kluczowego "const". Argumenty typu const mogą być używane wyłącznie do odczytu -kompilator zablokuje próbę wykonania na nich jakichkolwiek operacji modyfikujących wartość, w tym próbę wywołania metod obiektu, które taką zmianę powodują.
Kiedy wskaźnik do obiektu klasy potomnej nie może być rzutowany do wskaźnika obiektu klasy bazowej?
Gdy mamy wielokrotne dziedziczenie i ścieżka rzutowania jest niejednoznaczna:
Rozwiązanie (rzutujemy wskaźnik do d na wskaźnik do a):
d ob j ;
a *p = static_cast<d::b*>(&obj);
Co to jest ADL, OL i czym się różnią?
1. OL - Ordinary Lookup - szukanie operatora w aktualnym kontekście.
2. ADL - Argument Depending Lookup, Koeing Lookup - poszukiwanie operatora w przestrzeni nazw, w której zadeklarowane są typy obu jego argumentów.
4 z 13