eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAda Tutorial - w Instytucie Lotnictwa › Re: Ada Tutorial - w Instytucie Lotnictwa
  • Data: 2019-05-09 19:29:58
    Temat: Re: Ada Tutorial - w Instytucie Lotnictwa
    Od: Wojciech Muła <w...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Thursday, May 9, 2019 at 11:32:28 AM UTC+2, Roman Tyczka wrote:
    > On Tue, 7 May 2019 12:15:04 -0700 (PDT), Wojciech Muła wrote:
    >
    > > Zadanie dla chętnych: w ilu miejscach może tu polecieć wyjątek?
    > > Type1 i Type2 to jakieś klasy dostarczone przez użytkownika,
    > > nic o nich nie wiemy.
    > >
    > > Type1 fun(Type2 a, Type2 b)
    > > {
    > > if (a.get_value() > b.get_value()) {
    > > return a.get_foo();
    > > }
    > >
    > > return a.get_bar() + b.get_foo();
    > > }
    > >
    > > w.
    >
    > Ja tak z ciekawości, bo napisałeś dalej, że jest tych miejsc 13, czy
    > mógłbyś je wskazać? Nie programuję w C++, więc widzę tylko możliwość
    > wysypki w wywołaniach metod (zarówno w nich samych jak i na ich braku czyli
    > nilu). Ale z tego i tak nie wyjdzie aż 13. Czy masz tu na myśli jeszcze
    > przeciążanie operatorów? Co jeszcze?

    To czego nie zauważyłeś na pierwszy rzut oka to niejawne konwersje.
    Np. get_bar może zwrócić instancję klasy Kotek, ale operator dodawania
    jest zdefiniowany dla Pieska --- i jeśli Pieska da się utworzyć
    z Kotka, to mamy dwa konstruktory konwertujące, które oczywiście mogą
    rzucić wyjątki. Ponadto argumenty są przekazywane przez kopie, więc
    wołany jest konstruktor kopiujący Type1, który potencjalnie może
    coś rzucić. Tak samo wyniki zwracane mogą być typów konwertowalnych
    do Type2 i przed 'return' będzie konwersja, które może się nie powieść.

    C++ trochę ten problem rozwiązał przez jawne zabronienie niejawnych
    konwersji :) (słówko explicit), ale to musi być wyrażone wprost
    w programie.

    w.

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: