Hirdetés

Keresés

Új hozzászólás Aktív témák

  • dobragab

    addikt

    válasz jattila48 #3325 üzenetére

    Vagyis nem feltétlenül a taginicializáló listában írt sorrendben (néhány fordító warning-ot generál, ha a taginicializáló lista sorrendje eltér a deklaráció sorrendjétől). Ezek után hajtódik végre a szóban forgó objektum ctorának törzse.

    Pontosan. Mivel az inicializáló listát már ismeri, feltételeztem, ezzel is tisztában van.

    Normális fordítóktól kapsz ilyenkor warning-ot, különben _nagyon_ könnyű hibás kódot írni.

    class String
    {
    char * data;
    size_t size;

    public:
    String(char* d, size_t s) :
    size(s),
    data(new char[size+1])
    {
    // ...
    }

    // ...
    };

    Első ránézésre nem is látszik, miért hibás a kód, ha a fordítótól nem kapsz warningot, órákig keresheted.

    Ha egyáltalán generálható implicit move operáció, akkor az kb. ugyanaz mint a copy operáció, ezért fölösleges a move.

    Háát... nem. Ha az Example osztálynak adattagja egy std::vector, marhára nem mindegy, hogy az Example-nek generál-e move ctort, vagy nem. Ha generál, a vector is move-olódni fog, míg ha nem, másolódik (ahol beleszólhat a copy elision, de ezt most hagyjuk).

Új hozzászólás Aktív témák