C++11 #9: Wyłączanie funkcji z użycia: słowo kluczowe delete.

Słowo kluczowe delete w deklaracji funkcji.

Czasami zachodzi potrzeba uniemożliwienia wywołania konkretnej funkcji. A dokładniej – zadbania o to, żeby zdefiniowanej wcześniej funkcji nie można było użyć w kodzie importującym/używającym wcześniej zdefiniowanych konstrukcji.

Najciekawsze są sytuacje, w których kompilator samodzielnie jest w stanie wygenerować teoretycznie potrzebne funkcje i użyć ich, co pozbawia nas niejako kontroli nad tym procesem. Przykładem są tutaj choćby funkcje szablonowe, czy też automatycznie generowane konstruktory oraz operatory w klasach.

Czytaj więcej...

C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

Specyfikator final.

W poprzednim wpisie z serii C++11 opisałem specyfikator override. Niejako w parze z nim występuje specyfikator final, który również odnosi się do przeciążania funkcji wirtualnych w klasach pochodnych.

Mówiąc krótko: jeśli nie chcemy, żeby funkcja wirtualna była dalej przeciążana (w kolejnych klasach pochodnych w hierarchii), możemy użyć słowa final w deklaracji funkcji – dokładnie tak samo, jak wykorzystujemy override.

Czytaj więcej...