• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Praca na kopiach

0 głosów
308 wizyt
pytanie zadane 11 grudnia 2017 w C i C++ przez Sic Dyskutant (8,510 p.)
Czytając wiele artykułów związanych z pisaniem programów w języku c++ natchnąłem się na stwierdzenie "praca na kopiach"...

Jedyne co z tego rozumiem to to że tworzą się kopie danych.

Pytania z mojej:

Jak to się dzieje, że one powstają?, Jak uniemożliwić ich tworzenie? i Jak to działa?.

1 odpowiedź

+1 głos
odpowiedź 11 grudnia 2017 przez Bondrusiek Maniak (61,440 p.)
wybrane 11 grudnia 2017 przez Sic
 
Najlepsza

Witam,

kopię możesz sobie łatwo wyobrazić stosując konstruktor kopiujący

class Punkt
{
  public:
    int X, Y;
    Punkt() {X=0; Y=0;}  //jeżeli go nie zdefiniujemy to w tej sytuacji kompilator nie zrobi tego za nas i deklaracja Punkt X() będzie błędna
    Punkt(double fi, double r);
    Punkt(Punkt &Pkt) {X=Pkt.X; Y=Pkt.Y;}   //konstruktor kopiujący
};

Taka klasa używa konstruktora kopiującego do skopiowania danych. W sumie rozumie się samo przez siebie. Jeszcze często w programie na kopiach działają funkcje. Na przykład int jakasFun(int a), jeśli prześlesz funkcji zmienną to funkcja tworzy kopię i na niej działa a po wyjściu usuwa ją. Normalnie możesz skopiować dane używając operatora= np.

int a = 3;
int b;
b = a; // teraz b kopiuje wartość z a i b równa się 3

Jak uniemożliwić ich tworzenie?

Spróbuj dodać konstruktor kopiujący i operator= do sekcji private:

komentarz 11 grudnia 2017 przez Sic Dyskutant (8,510 p.)
Dziękuję bardzo mi pomogłeś.

Podobne pytania

0 głosów
1 odpowiedź 1,217 wizyt
0 głosów
1 odpowiedź 863 wizyt

93,778 zapytań

142,737 odpowiedzi

323,388 komentarzy

63,382 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...