@Slattern if dziala w c/cpp nie tylko na typach boolean, ale też na pozostałych. ogólnie 0, null sa równoważne false. wszelkie niezerowe lub niepuste wartości interpretowane są jako true
@Slattern: W pythonie czytelność kodu jest zerowa, a tutaj masz wszystko na tacy podane co jak gdzie z kim i po co, więc moim zdaniem twórcy to świetnie rozwiązali
@Slattern: no ale właśnie w tych przykładach z C# używasz implicite typów logicznych. String.IsNullOrEmpty(...) zwraca na pewno Boolean. tak samo operator porównania '!=' też zwraca Boolean.
CPP ma pełno takich smaczków, np. poronione 'const correctness', tworzenie nowych obiektów bez użycia operatora 'new', arytmetyka wskaźników itp. wszystko ma oczywiście swoje uzasadnienie w ramach języka, ale jak się na to patrzy po pisaniu w Javie/Pythonie to głowa może zaboleć ;)
@Slattern: no ale właśnie w tych przykładach z C# używasz implicite typów logicznych. String.IsNullOrEmpty(...) zwraca na pewno Boolean. tak samo operator porównania '!=' też zwraca Boolean.
@another_throwaway23: Dlatego właśnie piszę, że sobie odpowiadają. Jak już się to zna to nie takie złe. Ale jak widziałem kod C++ po długiej przerwie i widzę ten zanegowany wskaźnik charów to o matko!
@alex-fortune tak, jak za każdym razem trzeba się podrapać w głowę przy sygnaturze metody to coś jest skopane. o ile ostatni const jest dla mnie spoko (jawne oznaczenie metody jako nie zmieniającej stanu) to reszta jest "taka sobie".
@another_throwaway23: No ale one są potrzebne, a to się czyta bardzo prosto, po prostu czytasz od prawej do lewej:
const char * - WSKAŹNIK ( * ) na typ ( char ), który jest niezmienialny. Wskaźnik jest zmienialny, content na który wskazuje nie char * const - NIEZMIENIALNY ( const ) WSKAŹNIK ( * ) na typ ( char ). Wskaźnik jest niezmienialny, content tak.
@alex-fortune nie no, pamiętam jak się to czytało. rozumiem że na gruncie cpp są to potrzebne rzeczy i nie da się już teraz tego inaczej ugryźć. po prostu przyjemniej mi się pisze w javie. pythona też miło wspominam. cpp nie, sorry kolego ( ͡°ʖ̯͡°)
@another_throwaway23: ponieważ patrzysz na to jak język wygląda, a to tak całkiem szczerze ma zerowe znaczenie, znaczenie ma natomiast to, że Java z tego co pamiętam nie posiada takiego ficzera, więc można sobie pomarzyć o implementacjach, które można dzięki temu ficzerowi zrobić w C++ ( ͡°͜ʖ͡°)
int Method3(int const&) const; A to że składnia nie jest konkretnie określona w tym wypadku to niestety tylko zaszłość. Jedyne referencyjne parametry funkcji co się powinno używać
Aktywne Wpisy
Zawiera treści 18+
Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.
jakasZmienna = (char*)::JakasMetodaZwracajacaWskaznik();
if( !jakasZmienna )
{
// Kod
}
Dlaczego wskaźnik na char zwraca wartość true/false? (╯°□°)╯︵ ┻━┻
#programowanie #c++ #cpp
@simia: Nie mogę z całą pewnością stwierdzić, że to wada bo po prostu nie piszę w C++ na co dzień.
Od czasu do czasu muszę debugować kod w C++ i dochodzę do wniosków:
a)
źródło: comment_L2z6IQzINWyWc6obYYMXHp5dZMhCafPr.jpg
PobierzCPP ma pełno takich smaczków, np. poronione 'const correctness', tworzenie nowych obiektów bez użycia operatora 'new', arytmetyka wskaźników itp. wszystko ma oczywiście swoje uzasadnienie w ramach języka, ale jak się na to patrzy po pisaniu w Javie/Pythonie to głowa może zaboleć ;)
@another_throwaway23: Dlatego właśnie piszę, że sobie odpowiadają. Jak już się to zna to nie takie złe.
Ale jak widziałem kod C++ po długiej przerwie i widzę ten zanegowany wskaźnik charów to o matko!
@another_throwaway23: Czemu poronione? Ten ficzer przydalby się w chyba każdym jezyku wysokiego poziomu
w skrajnym przypadku:
np. const int*const Method3(const int*const&)const;
(wzięte z http://duramecho.com/ComputerInformation/WhyHowCppConst.html)
const char * - WSKAŹNIK ( * ) na typ ( char ), który jest niezmienialny. Wskaźnik jest zmienialny, content na który wskazuje nie
char * const - NIEZMIENIALNY ( const ) WSKAŹNIK ( * ) na typ ( char ). Wskaźnik jest niezmienialny, content tak.
Nie wiem co w tym
int Method3(int const&) const;A to że składnia nie jest konkretnie określona w tym wypadku to niestety tylko zaszłość.
Jedyne referencyjne parametry funkcji co się powinno używać