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

Kostruktor kopiujacy, kiedy uzywany?

Object Storage Arubacloud
0 głosów
168 wizyt
pytanie zadane 29 czerwca 2017 w C i C++ przez pimpek Użytkownik (680 p.)
edycja 29 czerwca 2017 przez pimpek

Nie rozumiem kiedy dziala  konstruktor kopiujacy.
 

 #include<iostream>
using namespace std;

class okno  
{ int x; 
int y; 
	public: 
okno() { x=10; y=20; 
} 

okno(okno const &obiekt):x(20000),y(15000){
}
 okno (int a,int b){ x=a;y=b; 
 }
  void pokaz() const
  { cout<<x<<", "<<y;
  }
 
};

void kop(okno  obiekt)
{ obiekt.pokaz(); 
}

int main()
{okno p1;
 
 kop(p1);
kop(okno());

}

 

otoz bol jest taki , ze dla kop(p1) -  wywola sie konstruktor kopiujacy( sprawdzenie tego jest wypisanie tego fukcja pokaz(). . 
Ale juz dla kop(okno()); - ten konstruktor sie NIE wywowala dlaczego???- a w ksiazce wyczytalem ze dla przesylanie przez wartosc obiektu klasy wywola sie konstru. kopiujacy

 

1
komentarz 29 czerwca 2017 przez unknown Nałogowiec (39,560 p.)
Od tego kodu bolą mnie oczy.

2 odpowiedzi

0 głosów
odpowiedź 29 czerwca 2017 przez criss Mędrzec (172,590 p.)
wybrane 29 czerwca 2017 przez pimpek
 
Najlepsza

Tak jak napisał (zasugerował?) unknown - wynika to z 'copy ellision' czy też RVO (od 'return value optimization' ale taki przypadek też można pod to podpiąć). Kompilator podczas tej optymalizacji jest w stanie określić jakie kopiowanie jest niepotrzebne i od razu umieścić obiekt w miejscu docelowym.

Spróbuj skompilować z opcją -fno-elide-constructors. Zobacz tutaj

PS: przy okazji poprawiłem czytelność kodu, bo była poniżej wszelkich standardów

+1 głos
odpowiedź 29 czerwca 2017 przez unknown Nałogowiec (39,560 p.)

Podobne pytania

0 głosów
1 odpowiedź 134 wizyt
pytanie zadane 13 lutego 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)
0 głosów
3 odpowiedzi 1,909 wizyt
pytanie zadane 9 lutego 2016 w C i C++ przez Ziuziek Mądrala (5,140 p.)
0 głosów
1 odpowiedź 369 wizyt

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...