В този урок ще научим за конструктора C ++ и неговия тип с помощта на примери.
Конструкторът е специален тип член-функция, която се извиква автоматично при създаване на обект.
В C ++ конструкторът има същото име като това на класа и няма тип връщане. Например,
class Wall ( public: // create a constructor Wall() ( // code ) );
Тук функцията Wall()
е конструктор на класа Wall
. Забележете, че конструкторът
- има същото име като класа,
- няма тип връщане и
- е
public
Конструктор по подразбиране на C ++
Конструктор без параметри е известен като конструктор по подразбиране . В горния пример Wall()
е конструктор по подразбиране.
Пример 1: Конструктор по подразбиране на 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; )
Изход:
Създаване на дължина на стената = 5.5
Тук, когато се създава обектът wall1, Wall()
се извиква конструкторът. Това задава променливата за дължина на обекта на 5.5
.
Забележка: Ако не сме дефинирали конструктор в нашия клас, тогава компилаторът C ++ автоматично ще създаде конструктор по подразбиране с празен код и без параметри.
C ++ Параметризиран конструктор
В C ++ конструктор с параметри е известен като параметризиран конструктор. Това е предпочитаният метод за инициализиране на данни за членове.
Пример 2: C ++ параметризиран конструктор
// 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()
функцията.
C ++ конструктор за копиране
Конструкторът за копиране в C ++ се използва за копиране на данни от един обект в друг.
Пример 3: Конструктор за копиране на C ++
#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()
това създаваме два обекта wall1 и wall2 и след това копираме съдържанието на първия обект във втория с кода
Wall wall2 = wall1;
Забележка : Конструктор се използва предимно за инициализиране на обекти. Те също се използват за стартиране на код по подразбиране, когато се създава обект.