Odpověď na názor

Odpovídáte na názor k článku Systém maker v programovacím jazyku C3. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.

  • 6. 11. 2025 6:05

    echo_zulu

    No základní rozdíl je v tom, kde se nachází pointer na VFT. A od toho se odvíjí důsledky.

    Rozhranie je prostriedok používaný pri realizácii jedného z druhov polymorfizmu. Jen to kontrakt, ktorý zaväzuje typ tvrdiaci, že rozhranie implementuje, poskytovať členov deklarovaných rozhraním. Nič viac, nič menej.

    Ani špecifikácia rozhrania v C# neobsahuje nič o tom, že tabuľka funkcií je tam a tam, že prístup je optimalizovaný tak a tak, ani nič podobné. To je vecou špecifikácie CLR.

    Pri takomto posudzovaní je nutné vedieť rozdeliť charakteristiky na hlavné a vedľajšie a to, čo uvádzate je implementačný detail, ktorý nesúvisí s tým, čo rozhranie je, ale s tým ako je realizované v rámci jedného konkrétneho behového prostredia.

    V C++ to nikoho nezaujíma. To, že v C++ je rozhranie ako koncept implementované inak, nie je žiadny nedostatok, ktorý zabudol niekto vyriešiť, ale vedomé rozhodnutie, zabezpečujúce že prekladač má pod kontrolou úplne všetko a aj to, že volanie funkcie rozhrania bude rýchle, teda bez zbytočných skokov a vyhľadávaní.

    Je to vedomá optimalizácia na rýchlosť, za cenu väčšinou zanedbateľného zvýšenia nárokov na pamäť. Pokiaľ má vo svete C++ s týmto niekto problém, má niekoľko ďalších spôsobov ako písať kód, s organizáciou dát vyhovujúcou modernému hardvéru a bez virtuálnych funkcií.

    Podľa vašej logiky by rozhrania v iných jazykoch neboli rozhraniami, lebo sú implementované inak ako v C#.