Ugrás a tartalomhoz

másoló konstruktor

A Wikiszótárból, a nyitott szótárból

Kiejtés

  • IPA: [ ˈmaːʃoloːkonʃtruktor]

Főnév

másoló konstruktor

  1. (informatika) A másoló konstruktor C++-ban egy speciális konstruktor, amelyet akkor hív meg a fordító, amikor:
  • egy objektumot másolással hozunk létre: MyClass obj2 = obj1;
  • egy objektumot érték szerint adunk át függvénynek: void f(MyClass obj);
  • egy objektumot érték szerint adunk vissza függvényből

Szintaxis:

ClassName(const ClassName& other);

Példa:

#include <iostream>
#include <cstring> // strcpy, strlen

class Dolgozo {
private:
    char* nev;
public:
    // Konstruktor
    Dolgozo(const char* n) {
        nev = new char[strlen(n) + 1];
        strcpy(nev, n);
    }

    // Másoló konstruktor
    Dolgozo(const Dolgozo& other) {
        nev = new char[strlen(other.nev) + 1];
        strcpy(nev, other.nev);
        std::cout << "Másoló konstruktor hívódott meg.\n";
    }

    // Destruktor
    ~Dolgozo() {
        delete[] nev;
    }

    void kiir() const {
        std::cout << "Név: " << nev << std::endl;
    }
};

int main() {
    Dolgozo d1("Anna");
    Dolgozo d2 = d1; // Másoló konstruktor hívódik
    d1.kiir();
    d2.kiir();
    return 0;
}

Fontos:

Ha az osztály dinamikusan foglal memóriát (new-vel), akkor muszáj írni másoló konstruktort, különben “shallow copy” lesz, és két objektum ugyanarra a memóriára mutat, ami problémát okozhat a destruktorban.

Tipp:

Ha egy osztályban van dinamikus memória:

  • Írj másoló konstruktort
  • Írj másoló értékadást (operator=)
  • Írj destruktort

Ez a Rule of Three (Három szabálya) C++-ban.


Fordítások