Rozumiem kopia konstruktora nazywa się na trzech przypadkachKonstruktor kopiowania w C++ jest wywoływany, gdy obiekt jest zwracany z funkcji?
- Przy uruchamianiu tego jednego obiektu i inicjowanie go z wartości z innego obiektu.
- Podczas przekazywania obiektu według wartości.
3. Gdy obiekt jest zwracany z funkcji według wartości.
Mam pytanie z nr 3 , jeśli konstruktor kopiowania jest wywoływany, gdy zwracana jest wartość obiektu, nie powinien powodować problemów, jeśli obiekt jest zadeklarowany lokalnie w funkcji.
mam na myśli konstruktora kopia jest głęboka kopia jeden i zajmuje odniesienia obiektu jako parametr
Nie ma gwarancji, że konstruktor kopiowania zostanie wywołany w tych przypadkach, ponieważ standard C++ umożliwia kompilatorowi optymalizację kopii w niektórych przypadkach - w szczególności [optymalizację wartości zwracanej] (http: // pl .wikipedia.org/wiki/Return_value_optimization) – rmp251
Odniesienie wskazane przez @ rmp251 wyraźnie odpowiada na to pytanie. –