Aby wykonać kopię obiektu należy wywołać jego konstruktor kopiujący, któremu również należy przekazać obiekt przez wartość, a więc wykonać jego kopię, itd. Błąd ten nie przejdzie procesu kompilacji, kompilator rozpoznaje taki przypadek i generuje sygnał błędu. Nie jest możliwe wygenerowanie nieskończonej pętli wywołań, ponieważ ciąg takich wywołań miałby teoretycznie nieskończoną długość i spowodowałby zablokowanie kompilatora. Aby uniemożliwić stworzenie obiektu danej klasy należy: zadeklarować wszystkie konstruktory w sekcji prywatnej (konstruktor kopiujący może, ale nie musi spełniać tego warunku), klasa nie może deklarować przyjaźni z klasą ani funkcją. Działanie takie stosuje się, gdy na przykład klasa ma służyć jako zbiór metod i pól statycznych i nie jest potrzebny jakikolwiek egzemplarz obiektu danej klasy (również jako klasy bazowej).
Źródło i licencja
Fragment artykułu Wikipedia — Konstruktor (programowanie obiektowe) · historia autorów.
Tekst: CC BY-SA 4.0. Wydzielono fragment z dłuższego artykułu.