Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Emulacja C++ przez C

43 views
Skip to first unread message

Borneq

unread,
Dec 31, 2018, 11:13:47 PM12/31/18
to
Klasy można emulować przez struktury, wywołanie metod przez funkcje, z
których pierwszy parametr to wskaźnik na strukturę.
Metody wirtualne - trzeba tablicę funkcji, a obiekt będzie strukturą,
gdzie pierwsze pole to wskaźnik na tę tabelę.
Dziedziczenie - trudno, pola będą się powtarzać
Hermetyzacja - wszystkie publiczne
Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
setjmp/longjmp

Sebastian Biały

unread,
Jan 1, 2019, 10:47:10 AM1/1/19
to
On 01/01/2019 05:13, Borneq wrote:
> Klasy można emulować [...]

Już to wymyślili, np. nazywało się SasC i było popularne w latach 90tych
na maszynach takich jak Amiga choć mało kto wtedy pisał w C++.
Zakończyło się, o ile pamiętam, częściowym wsparciem dla C++ którego
nikt na poważnie nie chciał.

AMX

unread,
Apr 19, 2023, 5:31:57 PM4/19/23
to
On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote:
> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
> setjmp/longjmp

Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
ale wystarczająco skuteczne.


--
adres w rot13
Nyrxfnaqre Znghfmnx r-...@b2.cy

Ghost

unread,
Apr 21, 2023, 12:49:05 AM4/21/23
to
W dniu 19.04.2023 o 23:31, AMX pisze:
> On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote:
>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>> setjmp/longjmp
>
> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
> ale wystarczająco skuteczne.

Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak
odwijania stosu z wolaniem destruktorow.

Maciek Godek

unread,
Apr 21, 2023, 2:38:12 AM4/21/23
to
Z drugiej strony, w języku C nie ma destruktorów, więc to raczej bez różnicy.

Kamil Jońca

unread,
Apr 21, 2023, 2:48:20 AM4/21/23
to
Myślę że pisząc o "wołaniu destruktorów" autor miał na myśli
automatyczne niszczenie obiektów/zwalnianie pamięci, które przy throw
dzieje się magicznie a przy longjmp trzeba o tym myśleć. Mylę się?
KJ

--
http://stopstopnop.pl/stop_stopnop.pl_o_nas.html

Ghost

unread,
Apr 21, 2023, 2:53:19 AM4/21/23
to
W dniu 21.04.2023 o 08:38, Maciek Godek pisze:
"emulacja c++"

Ghost

unread,
Apr 21, 2023, 2:54:11 AM4/21/23
to
W dniu 21.04.2023 o 08:42, Kamil Jońca pisze:
nie, mialem na mysli wolanie destruktorow, zwalnianie pamieci to rzecz
wrtorna

AMX

unread,
Apr 21, 2023, 3:58:05 PM4/21/23
to
On Fri, 21 Apr 2023 06:49:01 +0200, Ghost <Gh...@heaven.net> wrote:
>>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>>> setjmp/longjmp
>>
>> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
>> ale wystarczająco skuteczne.
>
> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak
> odwijania stosu z wolaniem destruktorow.
>

W C - gdzie jest setjmp/longjmp - nie ma destruktorów, więc to,
że nie są wywoławane nie wydaje się być istotne =:-)

W C++ mamy destruktory i używamy throw-catch.

AMX

Ghost

unread,
Apr 22, 2023, 2:37:05 AM4/22/23
to
W dniu 21.04.2023 o 21:58, AMX pisze:
no dzieki, czlowiek nawet po 35 latach programowania w c++ moze sie
czegos nauczyc

0 new messages