У овом упутству ћемо научити о конструктору Ц ++ и његовом типу помоћу примера помоћи.
Конструктор је посебна врста функције члана која се аутоматски позива када се објекат креира.
У Ц ++-у конструктор има исто име као и класа и нема тип повратка. На пример,
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;
Напомена : Конструктор се првенствено користи за иницијализацију објеката. Такође се користе за покретање подразумеваног кода када се креира објекат.