eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCzym jest programowanie?Re: Czym jest programowanie?
  • Data: 2012-07-28 00:57:08
    Temat: Re: Czym jest programowanie?
    Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 27/07/2012 11:18, AK wrote:
    > Użytkownik "Andrzej Jarzabek" <a...@g...com> napisał:
    >
    >> Nie wiem, co rozumiesz przez typy proste, ale parametrów przez
    >> referencję (aka 'przez zmienną') nie można przekazać niezależnie od typu.
    >> Możnqa przekazać parametr typu 'referencja na obiekt', ale przekazać
    >> można ją tylko przez wartość. Zatem nie da się zrobić:
    >>
    >> Object a=cośtam();
    >> [...]
    >> f(a);
    >> // funkcja f zmieniła wartość a, tak że wskazuje na inny obiekt niż
    >> // przed wywołaniem
    >
    > 1. Naucz sie opisywac temat _poprawnie_ bo przekazywanie parametrow
    > przez referencje to _nie jest to__ co opisujesz.

    W C++ tak się to nazywa. Proszę o jakiegoś linka do opisu co to znaczy
    przekazywanie przez referencję.

    > 2. _Bardzo dobrze_, ze w Javie (w Pythonie zreszta tez) nie da sie tego
    > zrobic.
    > Juz sama zmiana stanu obiektu przekazywanego przez do funkcji przez
    > (ref) referencje rodzi problemy i skutki uboczne,

    Kolejna rzecz, której mi brakuje w Javie - const.

    > a co dopiero gdyby sie sam obiekt zmienil brrr.... :) Do tego sluzy

    Niedawno ktoś opisywał, że ma problemy z za długimi metodami. Części
    tych metod możnaby wyobrębnić w osobne metody, ale problemem jest użycie
    w tych częściach zmiennych lokalnych. Brak możliwości przekazania
    zmiennych (typów referencyjnych czy jakichkolwiek innych) przez
    referencję powoduje utrudnienie refektoryzacji typu 'extract method'.

    > return i rzeczy typu 'tuple' (lub
    > udajace tuple).

    Nie ma zdaje się takiego czegoś w Javie.

    > 3. Uda Ci sie w C++ osiagnac zamierzony efekt uzywajac tylko referencji
    > (&) ?

    Normalnie. Zacznijmy od tego, że najbliższym odpowiednikiem typu
    referencyjnego z Javy jest w C++ wskaźnik, więc odpowiednikiem:

    JakisTyp zmienna = new JakisTyp();

    będzie w C++

    JakisTyp* zmienna = new JakisTyp();

    (może być shared_ptr albo unique_ptr)

    więc jeśli funkcja f ma sygnaturę
    f(JakisTyp*&);

    to mam:
    JakisTyp* a=cośtam();
    [...]
    f(a);
    // a może wskazywać na coś innego niż przed wywołaniem f

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: