Costruttori C ++: tipi e costruttori di copia

In questo tutorial, impareremo a conoscere il costruttore C ++ e il suo tipo con gli esempi della guida.

Un costruttore è un tipo speciale di funzione membro che viene chiamato automaticamente quando viene creato un oggetto.

In C ++, un costruttore ha lo stesso nome di quello della classe e non ha un tipo restituito. Per esempio,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Qui, la funzione Wall()è un costruttore della classe Wall. Si noti che il costruttore

  • ha lo stesso nome della classe,
  • non ha un tipo restituito e
  • è public

Costruttore predefinito C ++

Un costruttore senza parametri è noto come costruttore predefinito . Nell'esempio sopra, Wall()è un costruttore predefinito.

Esempio 1: Costruttore predefinito C ++

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Produzione:

 Creazione di una lunghezza del muro = 5.5

Qui, quando viene creato l'oggetto wall1, Wall()viene chiamato il costruttore. Questo imposta la variabile di lunghezza dell'oggetto su 5.5.

Nota: se non abbiamo definito un costruttore nella nostra classe, il compilatore C ++ creerà automaticamente un costruttore predefinito con un codice vuoto e senza parametri.

Costruttore parametrizzato C ++

In C ++, un costruttore con parametri è noto come costruttore parametrizzato. Questo è il metodo preferito per inizializzare i dati dei membri.

Esempio 2: C ++ Parameterized Constructor

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Produzione:

 Area del muro 1: 90,3 Area del muro 2: 53,55

Qui, abbiamo creato un costruttore parametrizzato Wall()che ha 2 parametri: double lene double hgt. I valori contenuti in questi parametri vengono utilizzati per inizializzare le variabili membro length e height.

Quando creiamo un oggetto della Roomclasse, passiamo i valori per le variabili membro come argomenti. Il codice per questo è:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Con le variabili membro così inizializzate, possiamo ora calcolare l'area del muro con la calculateArea()funzione.

Costruttore di copia C ++

Il costruttore di copia in C ++ viene utilizzato per copiare i dati di un oggetto in un altro.

Esempio 3: C ++ Copy Constructor

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Produzione

 Area della stanza 1: 90.3 Area della stanza 2: 90.3

In questo programma, abbiamo utilizzato un costruttore di copia per copiare il contenuto di un oggetto della Wallclasse in un altro. Il codice del costruttore di copie è:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Si noti che il parametro di questo costruttore ha l'indirizzo di un oggetto della Wallclasse.

Quindi assegniamo i valori delle variabili del primo oggetto alle variabili corrispondenti del secondo oggetto. In questo modo viene copiato il contenuto dell'oggetto.

In main(), creiamo quindi due oggetti wall1 e wall2 e quindi copiamo il contenuto del primo oggetto nel secondo con il codice

 Wall wall2 = wall1;

Nota : un costruttore viene utilizzato principalmente per inizializzare gli oggetti. Sono anche usati per eseguire un codice predefinito quando viene creato un oggetto.

Articoli interessanti...