Sdílet prostřednictvím


Kopírování objektů třídy

Přiřazení operace a operace inicializace způsobit objekty, které chcete zkopírovat.

  • Přiřazení: Při přiřazení hodnoty jednoho objektu na jiný objekt, první objekt zkopírován do druhého objektu.Proto

    Point a, b;
    ...
    a = b;
    

    způsobí, že hodnota b zkopírovány do a.

  • Inicializace: Inicializace dochází při deklaraci nového objektu, při předávání argumentů funkcí podle hodnoty nebo hodnoty jsou hodnoty vrácené z funkce.

Můžete definovat sémantiku pro objekty typu třídy "kopie".Zvažte například tento kód:

TextFile a, b;
a.Open( "FILE1.DAT" );
b.Open( "FILE2.DAT" );
b = a;

Předcházející kód může znamenat "kopírovat obsah Soubor1.DAT Soubor2.DAT"nebo jej může znamenat"Soubor2 ignorovat.DAT a b druhý popisovač FILE1.DAT. " Každá třída musí připojit vhodné sémantiku kopírování takto.

  • Pomocí operátoru přiřazení operator= s odkaz na typ jako návratový typ a parametr předaný pomocí třídy const odkaz – například ClassName& operator=(const ClassName& x);.

  • Pomocí kopie konstruktoru.Další informace o kopie konstruktoru, viz Pravidla pro deklarování konstruktory.

Pokud deklarujete není kopie konstruktoru, kompilátor vygeneruje member-wise kopie konstruktoru pro vás. Pokud není deklarovat operátor přiřazení kopie, kompilátor vygeneruje operátor přiřazení kopie member-wise, můžete. Deklarování kopie konstruktoru nepotlačuje operátor přiřazení kopie kompilátoru generovány ani naopak.Některá implementovat, doporučujeme také implementovat druhá tak, že význam kódu je jasné.

Member-Wise přiřazení se podrobněji v Memberwise přiřazení a inicializace.

Kopie konstruktoru trvá argument typu název třídy**&**, kde název třídy je název třídy, pro které je definován konstruktor.Příklad:

// spec1_copying_class_objects.cpp
class Window
{
public:
    Window( const Window& ); // Declare copy constructor.
    // ...
};

int main()
{
}

[!POZNÁMKA]

Typ argumentu kopie konstruktoru const název třídy& to možné.To zabrání nechtěným úpravám objektu, ze kterého je kopírování kopie konstruktoru.Také umožňuje kopírování z const objekty.

Viz také

Referenční dokumentace

Speciální funkce členů (C++)