Másolás kivitelező C purecodecpp

Másolás kivitelező C purecodecpp
Amikor újonnan tanulni programozást, először is, ha figyelembe vesszük egy új témát, felmerül a kérdés - miért kell ezt vagy azt, hogy „dolog”, amiről tanulni most. Mi azonnal válaszolni a kérdést: „Miért van szüksége egy példányát kivitelező?”.

A másolat kivitelező köteles biztosítani, hogy tudunk létrehozni egy „igazi” (nem bitmap) akár egy osztály a tárgyakat. Ez az objektum másolatának szükség lehet a következő esetekben:

  • ha egy osztály objektum átviteli függvény, mint a paraméter értékével (helyett referenciaként);
  • amikor visszatér az osztály az objektum működik munkája eredményét;
  • inicializálásnál egy objektumot egy másik objektum ebben az osztályban.

A másolás kivitelező - egy nagyszerű módja, hogy kb ilyen hibák és problémák. Ez létrehoz egy „igazi” másolatot az objektum, amely saját területén a kupac.

A másolat kivitelező szintaxis így néz ki:

Nézzük az alábbi egyszerű, de nagyon beszédes példa. Az meg fogunk vizsgálni minden 3 eseteket, amelyekben kívánatos a másolási kivitelező. az osztály jön létre, amely a nem-érv kivitelező, a másolat konstruktor és destruktor. Ez a példa nem volt túl nehézkes, konstruktorok és a destruktor egy üzenetet jelenít meg, mint a „megbotlott designer”, „Aktív dektruktor” ... kiosztani és a szabad memória nem. Mi lesz tökéletesen látható, hogy hány alkalommal és hány tervezők ismét működni fog destruktor. Nyilvánvaló, hogy a destruktor (ha memóriát szabadít fel) nem működik több alkalommal, mint a kivitelező memóriát.

Másolás kivitelező C ++

Programot végrehajtó látni fogja a konzol az alábbiak szerint:

Másolás kivitelező C purecodecpp

Lássuk, mi a program generált, hogy a konzol. Block 1 - amikor új objektumot, töltse meg nem érv kivitelező. Blokkban 2, már elhelyezett showFunc () függvény. Az átvitel során benne „objektum paraméter” érték szerint, ő betölti a másolatot a kivitelező, valamint hozzon létre egy „igazi” másolatot az objektum OneClass osztályban. Ha kilép ezt a funkciót, a destruktor dolgozott egy példányát az objektum megsemmisül. By the way, az a tény, hogy a tárgynak, mint a paraméter értéke szempontjából okoz a másolat kivitelező, kiváló alkalom arra, hogy adja át egy objektum hivatkozásként. Ez takarít meg időt és memóriát.

A funkcióblokkot elrendezett 3 returnObjectFunc (). Mivel a teste előírja létrehozása egy új objektum osztály OneClass - először betölteni nem-érv kivitelező. Továbbra is működik-kód és a visszatérés során a tárgy fő funkciója fő. másolja kivitelező terhelést. A végén, ahogy annak lennie kell, a romboló dolgozott kétszer az objektum és a valódi példányt.

Másolás kivitelező C purecodecpp

Ebben a helyzetben, ha a destruktor felszabadítja a memóriát -, hogy hiba történt a programban.

Erősen ajánljuk, hogy olvassa el a másolatot kivitelező téma a könyvben Stephen Prata „programozási nyelv a C ++. Előadások és gyakorlatok. 6. kiadás. „Ő feltárta egy sokkal mélyebb és tartalmazza az összes alapvető árnyalatok használata a másolat kivitelező. Részletezésre a művelet hozzárendelés =.

Annak érdekében, hogy a honlapunkon - kattints az érme doboz és válassza tetszőleges módon.

Kapcsolódó cikkek