Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Meetup Nowoczesny C++ - Welcome!
Poniżej jest kod napisany w starym C++03. Reprezentuje on prostą hierarchię figur geometrycznych. Klasa bazowa Shape definiuje interfejs z 3 publicznymi metodami: getArea(), getPerimeter() i print(). Po Shape dziedziczy klasa Rectangle reprezentująca prostokąt, a po niej dziedziczy klasa Square reprezentująca kwadrat. Klasy te odpowienio implementują wspomniane metody. W funkcji main() jest użycie figur, które są przechowywane w kolekcji. Twoim zadaniem jest unowocześnienie tego kodu, korzystając z możliwości jakie daje C++11 i C++14.
Jeśli ściągniesz kod lokalnie, to dodatkowo możesz sprawdzać postęp za pomocą dodanych skryptów sprawdzających. Repozytorium do ściągnięcia na GitHubie
Potrzebne programy: make, g++
Użycie:
make
Zadania:
nullptr: Zamień wszystkie NULLe nanullptrusingalias: Zamień typedef na alias using- automatic type deduction:
Użyj
auto, tam gdzie można go użyć - range based for loop: Użyj pętli for po kolekcji tam, gdzie to możliwe
default: Oznacz konstruktory kopiujące jakodefault.delete: Usuń metodęgetY()z klasySquare. Usuń domyślne konstruktory (te bez parametrów).final: Oznacz klasęSquarejakofinaloraz oznacz metodęgetX()w klasieRectanglejakofinaloverride: Oznacz wszystkie wirtualne metody jakooverride. Czy zauważasz jakiś problem?
Zadania dodatkowe:
- uniform initialization:
Użyj jednolitej inicjalizacji do zainicjalizowania kolekcji
shapes. - smart pointers:
Zamień zwykłe wskażniki na
shared_ptr - lambda functions:
Zamień funkcję
sortByArea()na funkcję lambda
Co dalej?
- Porównaj swoje rozwiązania z naszymi na GitHubie
- Polub Coders School na Facebooku
- Zapisz się na newsletter, aby pobrać dzisiejszą prezentację oraz otrzymywać informacje o przyszłych wydarzeniach i kursach (możesz się wypisać w dowolnej chwili)
- Dołącz do Meetupa Kurs programowania C++
- Odwiedź stronę Coders School - http://coders.school
- Sprawdź swój poziom znajomości C++ wykonując 10-minutowy test
- Zapoznaj się z naszą ofertą kursu C++
- Zgłoś się na darmowe konsultacje z C++
- W razie jakichkolwiek pytań napisz mi maila - lukasz(at)coders.school