Uniemozliwienie wywolania konstructora kopiowania w C++

class A{}; A a;

Co nalezy zrobic, by nie dalo sie wywolac konstruktora kopiowania? Tzn, zeby cos takiego bylo nielegalna operacja:

A b(a);

  • Zadeklarować go jako prywatny lub chroniony, tzn.:

    class A {
    protected:
        A(const A& right) {}
    };
    

    lub

    class A {
    private:
        A(const A& right) {}
    };
    

    W praktyce ciało mógłbyś pominąć, pod warunkiem że sam wewnątrz tej klasy, ani w klasach pochodnych i zaprzyjaźnionych nie będziesz próbował kopiować instancji klasy A.

    Jeżeli chcesz zablokować wogóle kopiowanie obiektu, pamiętaj to samo zrobić z operatorem przypisania operator=

  • Nie jestem specem od C++, w C# można mieć prywatne konstruktory - w C++ nie?

Zaloguj się, aby dodać swoją odpowiedź