C ++ Konstruktorok: Konstruktorok típusai és másolása

Ebben az oktatóanyagban megismerhetjük a C ++ konstruktort és annak típusát a segítő példákkal.

A konstruktor egy speciális típusú tagfunkció, amelyet automatikusan meghívnak egy objektum létrehozásakor.

A C ++ nyelven egy konstruktornak ugyanaz a neve, mint az osztálynak, és nincs visszatérési típusa. Például,

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

Itt a függvény Wall()az osztály konstruktora Wall. Figyeljük meg, hogy a kivitelező

  • ugyanaz a neve, mint az osztály,
  • nincs visszatérési típusa, és
  • van public

C ++ alapértelmezett kivitelező

A paraméter nélküli konstruktort alapértelmezett konstruktorként ismerjük . A fenti példában Wall()alapértelmezett konstruktor.

1. példa: C ++ alapértelmezett konstruktor

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

Kimenet:

 Falhossz létrehozása = 5.5

Itt, amikor a wall1 objektum létrejön, meghívják a Wall()konstruktort. Ezzel az objektum hosszváltozóját állítja 5.5.

Megjegyzés: Ha nem definiáltunk konstruktort az osztályunkban, akkor a C ++ fordító automatikusan létrehoz egy alapértelmezett konstruktort üres kóddal és paraméterek nélkül.

C ++ paraméterezett kivitelező

A C ++ - ban a paraméterekkel rendelkező konstruktort paraméterezett konstruktorként ismerjük. Ez az előnyben részesített módszer a tagadatok inicializálásához.

2. példa: C ++ paraméterezett konstruktor

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

Kimenet:

 Az 1. fal területe: 90.3 A 2. fal területe: 53.55

Itt létrehoztunk egy paraméterezett konstruktort Wall(), amelynek 2 paramétere van: double lenés double hgt. Az ezekben a paraméterekben szereplő értékeket használjuk a tagváltozók hosszának és magasságának inicializálásához.

Amikor létrehozunk egy Roomosztály objektumot , argumentumként adjuk át a tag változók értékeit. Ennek kódja:

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

Az így inicializált tagváltozókkal most a calculateArea()függvény segítségével kiszámíthatjuk a fal területét .

C ++ Copy Constructor

A C ++ változatban található másoló konstruktort az egyik objektum adatainak másolására használják.

3. példa: 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; )

Kimenet

 Az 1. szoba területe: 90.3 A 2. szoba területe: 90.3

Ebben a programban egy másoló konstruktort alkalmaztunk az Wallosztály egyik objektumának tartalmának másolására . A másolatkészítő kódja:

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

Vegye figyelembe, hogy ennek a konstruktornak a paramétere megadja az Wallosztály egyik objektumának címét .

Ezután hozzárendeljük az első objektum változóinak értékeit a második objektum megfelelő változóihoz. Így másolja az objektum tartalmát.

A main()mi majd hozzon létre két tárgy lámpák1 és wall2, majd másolja a tartalmát az első objektum a második kóddal

 Wall wall2 = wall1;

Megjegyzés : A konstruktort elsősorban objektumok inicializálására használják. Objektum létrehozásakor alapértelmezett kód futtatására is használják őket.

érdekes cikkek...