Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Satisfactia de a face ce iti place. tutorial, lectii online, solutii simple, exmeple, programe, C++

Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

C


Index » educatie » » informatica » C
» Constructorul de copiere


Constructorul de copiere


Constructorul de copiere

Constructorul de copiere este un constructor special, folosit pentru a crea un nou obiect, copie a unui obiect existent. Acest constructor are un singur argument – o referinta catre obiectul ce va fi copiat. Compilatorul genereaza implicit constructorul de copiere pentru orice clasa definita de noi. Constructorul de copiere implicit copie fiecare membru a obiectului parametru in membrul corespunzator a obiectului de initializat.  De exemplu, pentru clasa Dreptunghi din exemplele noastre, compilatorul va genera un constructor de copiere echivalent cu urmatorul:

Dreptunghi::Dreptunghi(Dreptunghi &sursa)

Constructorul de copiere are un rol special in C++. El este apelat automat in urmatoarele situatii:

1.      La declararea unui obiect, initializat dintr-un alt obiect. Exemplu:

Dreptunghi x(3,4); // constructorul este folosit pentru a crea x

Dreptunghi y(x);   // constructorul de copiere este folosit pentru a crea y

Dreptunghi z = x;  // constructorul de copiere este folosit pentru initializare in

                    // declaratie

z = x;              // Operatorul de atribuire (=), nu se apeleaza constructori

2.      Un parametru valoare este initializat din argumentul corespunzator:

f(x);               // constructorul de copiere initializeaza parametrul valoare de                 

                    // tip clasa.

3.      Un obiect este returnat de o functie.

In total, exista 3 membri generati de compilator in mod implicit:

1.      Constructorul fara parametri.

2.      Constructorul de copiere.

3.      Operatorul de atribuire.

Oricare dintre acesti membri pot fi suprascrisi in caz de nevoie.

1.     Exercitii

1.      Implementati o clasa Complex care sa incapsuleze lucrul cu numere complexe. Supraincarcati operatorii:

1.1.   +

1.2.    -

1.3.   ==

1.4.   ! - modulul numarului complex

Scrieti un program care citeste de la tastatura 2 numere complexe, si returneaza rezultatul celor 4 operatori aplicati asupra numerelor.

2.      Completati clasa Multime din laboratorul 3, problema 1,  cu urmatorii membri:

·        Operatorul ”+=” cu parametru int – adauga un element la multime, echivalent cu functia Multimeadauga().

·        Operatorul ”-=” cu parametru int – extrage un element din multime, echivalent cu functia Multimeextrage().



·        Operatorul ”=” . Atentie la datele alocate dinamic.

·        Constructorul de copiere.

·        Operatorul ”+=” cu parametru Multime. Va adauga la multimea curenta elementele multimii primite ca parametru. Practic, dupa aceasta operatie multimea curenta va deveni reuniunea dintre cele 2 multimi operanzi. Va fi utilizat intr-o expresie de genul a+=b

·        Operatorul ”cu parametru Multime. Va realiza reuniunea dintre cele 2 multimi operanzi. Spre deosebire de operatorul ”+=” , multimea reuniune va fi un obiect nou, returnat de functia operator. Multimile operanzi nu vor fi modificate. Se va utiliza intr-o expresie de genul a=b+c

Realizati un program care testeaza toti acesti operatori.

3.      Implementati o clasa String care sa reprezinte un sir de caractere si operatiile aferente. Definiti urmatorii membri:

3.1.   Operatorul  + , concatenarea sirurilor.

3.2.   Operatorul =

3.3.   Operatorul = =

3.4.   Metoda

int find(String subsir)

Realizeaza cautarea unui subsir intr-un sir. Returneaza prima pozitie in sirul curent, in care a fost gasit sirul subsir. Sau -1 daca subsirul nu a fost gasit. De exemplu

sir.find(subsir) va returna 3, daca sir reprezinta “alabala” iar subsir - “ba“ .

3.5.   Metoda

void print()

Afiseaza sirul.

3.6.   Metoda

int compare(String sir2)

Realizeaza compararea a 2 siruri in ordine lexicografica. Returneaza -1 daca sirul curent (this) este mai mic decit sir2, 0 daca sirurile sunt egale, si 1 daca sirul curent este mai mare.

3.7.   Constructorul vid – creaza un sir vid.

3.8.   Constructorul cu argumnt un sir de caractere (char *).

3.9.   Constructorul de copiere.

3.10.                    Destructorul.






Politica de confidentialitate
C


Access
Adobe photoshop
Autocad
Baze de date
C
Calculatoare
Corel draw
Excel
Foxpro
Html
Internet
Java
Linux
Mathcad
Matlab
Outlook
Pascal
Php
Powerpoint
Retele calculatoare
Sql
Windows
Word

Constructorul de copiere
Destructori
EXPRESII SI INSTRUCTIUNI
DECLARATII SI CONSTANTE
Clase. Incapsularea
Controale de tip lista
Supraincarcarea functiilor
Functii prietene
Clase derivate. Mosteniri
Mostenirea















 
Copyright © 2019 - Toate drepturile rezervate