Конструктори Ц ++: типови и конструктори за копирање

У овом упутству ћемо научити о конструктору Ц ++ и његовом типу помоћу примера помоћи.

Конструктор је посебна врста функције члана која се аутоматски позива када се објекат креира.

У Ц ++-у конструктор има исто име као и класа и нема тип повратка. На пример,

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

Овде је функција Wall()конструктор класе Wall. Приметите да је конструктор

  • има исто име као и класа,
  • нема тип повратка и
  • је public

Ц ++ подразумевани конструктор

Конструктор без параметара познат је као подразумевани конструктор . У горњем примеру Wall()је подразумевани конструктор.

Пример 1: Подразумевани конструктор Ц ++

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

Излаз:

 Стварање дужине зида = 5,5

Овде, када се креира објекат валл1, позива се Wall()конструктор. Ово поставља променљиву дужине објекта на 5.5.

Напомена: Ако у својој класи нисмо дефинисали конструктор, тада ће Ц ++ компајлер аутоматски креирати подразумевани конструктор са празним кодом и без параметара.

Ц ++ параметарски конструктор

У језику Ц ++ конструктор са параметрима познат је као параметризовани конструктор. Ово је пожељна метода за иницијализацију података о члановима.

Пример 2: Параметарски конструктор Ц ++

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

Излаз:

 Површина зида 1: 90.3 Површина зида 2: 53.55

Овде смо креирали параметризовани конструктор Wall()који има 2 параметра: double lenи double hgt. Вредности садржане у овим параметрима користе се за иницијализацију дужине и висине променљивих чланова.

Када креирамо објекат Roomкласе, вредности за променљиве члана прослеђујемо као аргументе. Шифра за ово је:

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

Са тако иницијализованим променљивим чланова, сада помоћу calculateArea()функције можемо израчунати површину зида .

Ц ++ конструктор за копирање

Конструктор копирања у језику Ц ++ користи се за копирање података једног објекта у други.

Пример 3: Конструктор за копирање Ц ++

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

Оутпут

 Површина собе 1: 90.3 Површина собе 2: 90.3

У овом програму смо користили конструктор копирања за копирање садржаја једног објекта Wallкласе у други. Код конструктора за копирање је:

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

Приметите да параметар овог конструктора има адресу објекта Wallкласе.

Затим додељујемо вредности променљивих првог објекта одговарајућим променљивим другог објекта. Тако се копира садржај предмета.

У main(), онда створити два објекта валл1 и валл2 а затим копирате садржај првог објекта у секунди са кодом

 Wall wall2 = wall1;

Напомена : Конструктор се првенствено користи за иницијализацију објеката. Такође се користе за покретање подразумеваног кода када се креира објекат.

Занимљиви Чланци...