C ++ konstruktörer: Typer och kopiekonstruktörer

I den här handledningen lär vi oss om C ++ - konstruktören och dess typ med hjälpexemplen.

En konstruktör är en speciell typ av medlemsfunktion som anropas automatiskt när ett objekt skapas.

I C ++ har en konstruktör samma namn som klassen och den har ingen returtyp. Till exempel,

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

Här är funktionen Wall()en konstruktör av klassen Wall. Lägg märke till att konstruktören

  • har samma namn som klassen,
  • har ingen returtyp, och
  • är public

C ++ standardkonstruktör

En konstruktör utan parametrar kallas en standardkonstruktör . I exemplet ovan Wall()är en standardkonstruktör.

Exempel 1: C ++ standardkonstruktör

 // 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; )

Produktion:

 Skapa en vägglängd = 5.5

Här, när wall1-objektet skapas, Wall()anropas konstruktören. Detta ställer in objektets längdvariabel till 5.5.

Obs! Om vi ​​inte har definierat en konstruktör i vår klass skapar C ++ - kompilatorn automatiskt en standardkonstruktör med en tom kod och inga parametrar.

C ++ Parameterized Constructor

I C ++ är en konstruktör med parametrar känd som en parametrerad konstruktor. Detta är den föredragna metoden för att initiera medlemsdata.

Exempel 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; )

Produktion:

 Area of ​​Wall 1: 90.3 Area of ​​Wall 2: 53.55

Här har vi skapat en parametrerad konstruktör Wall()som har två parametrar: double lenoch double hgt. Värdena i dessa parametrar används för att initialisera medlemsvariablerna längd och höjd.

När vi skapar ett objekt av Roomklassen skickar vi värdena för medlemsvariablerna som argument. Koden för detta är:

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

Med sålunda initialiserade medlemsvariabler kan vi nu beräkna väggarean med calculateArea()funktionen.

C ++ Copy Constructor

Kopikonstruktören i C ++ används för att kopiera data från ett objekt till ett annat.

Exempel 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; )

Produktion

 Område för rum 1: 90.3 Område för rum 2: 90.3

I det här programmet har vi använt en kopiekonstruktör för att kopiera innehållet i ett objekt i Wallklassen till ett annat. Kopianläggarens kod är:

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

Observera att parametern för denna konstruktör har adressen till ett objekt i Wallklassen.

Vi tilldelar sedan värdena på variablerna för det första objektet till motsvarande variabler för det andra objektet. Så här kopieras innehållet i objektet.

I main()skapar vi sedan två objekt wall1 och wall2 och kopierar sedan innehållet i det första objektet till det andra med koden

 Wall wall2 = wall1;

Obs! En konstruktör används främst för att initialisera objekt. De används också för att köra en standardkod när ett objekt skapas.

Intressanta artiklar...