Wpis z mikrobloga

Dlatego nie przepadam za C++ w czytaniu i pisaniu.

jakasZmienna = (char*)::JakasMetodaZwracajacaWskaznik();
if( !jakasZmienna )
{
// Kod
}

Dlaczego wskaźnik na char zwraca wartość true/false? (°°

#programowanie #c++ #cpp
  • 19
  • Odpowiedz
@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ć ;)
  • Odpowiedz
@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!
  • Odpowiedz
@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.

Nie wiem co w tym
  • Odpowiedz
@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++ ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@another_throwaway23: bzdury tam są powpisywane, twój przykład to po prostu

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ć
  • Odpowiedz