Constructorul de copiere - este

De obicei, compilatorul creează automat un constructor de copiere pentru fiecare clasă (cunoscut sub numele de constructori de copiere implicite, adică constructorii de copiere specificate în mod implicit), dar în unele cazuri, un programator creează un constructor copy, numit în acest caz, o copie constructor clar (sau „constructor copy, specifică în mod explicit „). În astfel de cazuri, compilatorul creează constructori implicite.

Constructorul de copiere este cea mai mare parte necesară atunci când obiectul are un pointer sau o legătură nepartajate. cum ar fi un fișier. În acest caz, de obicei, aveți nevoie, de asemenea, un destructor, și operatorul de atribuire (a se vedea. Regula de trei).

definiție

Primul constructor trebuie să fie aplicat în absența altor designeri. O diferență între primul și al doilea constructor constă în faptul că variabilele pot fi copiate mai întâi la proiectant. De exemplu:

O altă diferență între ele este destul de clar:

Următorii constructori copy (sau constructori constante) sunt incorecte:

deoarece apelul acestor designeri necesită copie regulat, ceea ce va duce la un apel recursiv infinit (adică o buclă fără sfârșit).

Există patru cazuri apela constructorul copy:

  1. Când subiectul se întoarce
  2. Când obiectul este trecut (funcția) a valorii unui argument
  3. Atunci când un obiect este construit pe baza unui alt obiect (aceeași clasă)
  4. Când compilatorul generează un loc temporar (ca în prima și a doua cazuri de mai sus, ca o conversie explicită etc.)

Obiectul poate fi setat folosind una dintre cele două metode:

  • O misiune clară în ceea ce privește
  • iniţializarea

O misiune clară în ceea ce privește

iniţializarea

Obiectul poate fi inițializat prin oricare dintre următoarele metode.

b. Cu ajutorul argumentelor funcției

c. Cu ajutorul valorii de returnare a funcției

Constructorul de copiere este utilizat numai în cazul în care acesta din urmă (inițializarea) și nu este utilizat în locul de repartizare (de exemplu, în cazul în care se utilizează operatorul de atribuire).

Implicit constructor copy clasa apelează constructorul de copiere de bază și o copie a apartenenței lor corespunzătoare tipului lor. În cazul în care acest lucru este un tip de clasă, constructorul de copiere este numit. Dacă este un tip scalar, folosește operatorul de atribuire încorporat. În cele din urmă, în cazul în care este o matrice, atunci fiecare element este copiat tipul relevant de drum. [2]

Folosind constructor copy explicit programator poate defini următorii pași după copierea obiectului.

Următoarele exemple ilustrează modul în care constructorii de copiere și de ce acestea sunt uneori necesare.

constructor copy Implicit

Luați în considerare următorul exemplu.

Așa cum era de așteptat, timmy copiat în noul timmy_clone obiect. Prin schimbarea vârstei (vârsta) Timmy. timmy_clone la varsta nu sa modificat. Acest lucru se datorează faptului că acestea sunt entități complet independente.

Compilatorul generat constructorul copy pentru noi, care poate fi scris astfel:

Așa că, atunci când avem nevoie într-adevăr un constructor copie explicit? Următoarea secțiune va lua în considerare problema.

constructor copy Explicit

Acum, ia în considerare o clasă foarte simplu de matrice dinamice, cum ar fi următoarele:

Deși nu a specificat un constructor de copiere, compilatorul generat pentru noi. Constructorul generat arată astfel:

constructori de copiere și șabloane

Contrar așteptărilor, șablonul constructor copy - nu explicit constructor de copiere. Astfel, nu este de ajuns:

Explicite, și anume nu un șablon, constructorul de copiere trebuie să pună în aplicare, de asemenea, o matrice (Array) bazate pe matrice (Array).

a se vedea, de asemenea,

Vezi ce un „constructor copy“ în alte dicționare:

Designer (programare) - Acest termen, există alte utilizări, a se vedea Designer .. În constructorul clasei de programare orientate-obiect (din limba engleză. Contructor uneori tăiat ctor) bloc special de instrucțiuni este numit atunci când este creat un obiect. ... ... Wikipedia

designer-șef al proiectului - Taxe. Supraveghează dezvoltarea unor proiecte complexe în toate etapele și fazele de lucru, asigurând în același timp eficiența economică și competitivitatea, de mare. operare comoditate, ... ... manual de calificare pentru manageri, profesioniști și alți angajați

Designerul - responsabilități de locuri de muncă. Asigură conducerea și organizarea de etape individuale sau zone de lucrări de inginerie de proiectare, participă la rezolvarea tuturor problemelor științifice și tehnice aferente. Dezvoltarea termeni de referință pentru ... ... Manual de calificare pentru manageri, profesioniști și alți angajați

Chief Designer - Atribuții. Supraveghează dezvoltarea de noi și de modernizare a structurilor de produse (instalații, mașini, vehicule, echipamente, utilaje) de producție existente, oferindu-le ridicat. competitivă și brevetabile, aliniat ... ... Manual de calificare pentru manageri, profesioniști și alți angajați

Splinter (model de design) - În acest termen, există alte utilizări, vezi singuratică .. Singleton Singleton tip de model de proiectare: generarea descris în Design Patterns Da unic de programare # 160 ... Wikipedia (în engleză Singleton.)

  • Constructor de copiere. Dzhessi Rassel. Această carte va fi făcută în conformitate cu comanda pe tehnologia de imprimare Tehnologie-on-Demand. Conținutul de calitate înaltă prin articole wikipedia! Constructor de copiere (în literatura engleză ... Citeste mai mult Cumpără pentru 1.125 de ruble

articole similare