Odpověď na názor

Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.

  • 10. 5. 2012 9:34

    Ondřej Novák (neregistrovaný)

    [28] Není třeba psát nic do dokumentace :-) Stačí jen dodržet určitá pravidla, která mnozí z nás odmítají dodržovat. Třeba to, že v C++ může vyletět vyjimka odkudkoliv, kromě od funkcí, které mají vyjimky vypnuté / throw() /. Ano, je to změna stylu programování oproti klasickému C, ale opravdu doporučuju si na to zvyknout. Právě chtrých ukazatelů bych se nebál, protože se neliší od běžných ukazatelů, akorát za člověka řeší právě ty situace, které normálně řeší odchytáváním kdejaké vyjimky ... často úplně zbytečně ... jen proto, aby funkce po sobě uklidila ... přestože tohle je věc, která patří do destruktorů... a věřte mi, překladač ten úklid pomocí destruktorů zvládne mnohem lépe, než vy ručně. Díky tomu se nemusím soustředit na chyby ani na úklid a udělám víc práce. Porovnejte si tyto dva kódy

    bool foo() {
       char *str = allocString("hello world");
       if (str == 0) return false;
       if (!printString(str)) {
          dealloc­String(str);
          return false;
       }
       //... dalsi cast kodu
       deallocStrin­g(str);
       return true;
    }

    void foo() {
       String str("hello world"); //vyhodi vyjimku kdyz se to nepodari
       printStrin­g(str); //vyhodi vyjimku kdyz se to nepodari a automaticky uklidi
    } //automaticky uklidi str.

    A to kdy se řeší a neřeší každý bajt. Já řeším každý bajt v C++ :-) Dá se to, ale na některá úskalí s tím spojené budu upozorňovat na rootu.