Gynvael rozpoczął nową świecką tradycję podrzucania prostych zadanek programistycznych na końcu swoich streamów. W tym poście opiszę jak doszedłem do rozwiązania i dlaczego zajęło mi to więcej czasu niż powinno.
Uwaga, w środku są spoilery.
The next gen of old-school blogging
Gynvael rozpoczął nową świecką tradycję podrzucania prostych zadanek programistycznych na końcu swoich streamów. W tym poście opiszę jak doszedłem do rozwiązania i dlaczego zajęło mi to więcej czasu niż powinno.
Uwaga, w środku są spoilery.
Dość często można się spotkać ze (zrozumiałym) przeświadczeniem, że w C++ słowo kluczowe inline sprawi, że funkcja nim oznaczona zostanie zinline’owana1. Nic bardziej mylnego! W C++ efektywne znaczenie tego słowa jest zupełnie inne, a C++17 jeszcze trochę je zmienia.
Dość przewrotnie odpowiem: kiedy zajdzie taka potrzeba. Podstawą jest zachowanie logiki kodu (Samochod + Samochod nie ma zbyt sensu, ale Currency + Currency już tak) oraz konwencji języka (lub frameworka), np. w przypadku operatora <<.
Tutaj nie ma wielkiej filozofii. Dobrze by było osiągnąć pełną serializację, t.j. zagwarantować poprawność kodu z listingu poniżej, ale w praktyce jest to więcej roboty niż to warte dla większości klas. Szczególnie, że nawet biblioteka standardowa nie zachowuje się w ten sposób, np. dla klasy std::string.