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 nanullptr
using
alias: 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ęSquare
jakofinal
oraz oznacz metodęgetX()
w klasieRectangle
jakofinal
override
: 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