Вступ про конструктор на С
Конструктор на C використовується в управлінні пам'яттю програмування C ++. Він дозволяє вбудовувати такі типи даних, як int, float та визначені користувачем типи даних, наприклад клас. Конструктор в об'єктно-орієнтованому програмуванні ініціалізує змінну визначеного користувачем типу даних. Конструктор допомагає у створенні об'єкта. Ім'я конструктора те саме, що ім'я об'єкта, але воно не має зворотного типу. Конструктор виконується автоматично, коли створюється об'єкт або спеціальний член. Він виділяє пам'ять для нового створеного об'єкта, і він може бути перевантажений.
Код
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Використання Конструктора
- Це спеціальний метод, який містить те саме ім'я, що і ім'я класу, ініціалізує об'єкт щоразу, коли він створюється. Так це просто і легко у виконанні.
- В основному використовується для управління пам’яттю. Вони використовуються для ініціалізації та видалення блоку пам'яті, коли це більше не потрібно, якщо параметри "Нове та видалення" визначені програмістом
- Компілятор створює конструктор за замовчуванням щоразу, коли об’єкт створений. Коли ви не оголосили конструктор, компілятор створив би його. Це корисно, оскільки об’єкт і функція в програмі знають, що об’єкт існує
- Конструктор для об'єкта створюється, коли екземпляр є об'єктом, який оголошується. Клас може мати кілька конструкторів для різних ситуацій. Перевантаження конструктора збільшує універсальність класу за рахунок наявності багатьох конструкторів в індивідуальному класі.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Отже конструктор перевантажений різними значеннями.
Типи конструктора в С
Основні типи конструктора пояснюються наступним чином,
1. Конструктор за замовчуванням
Конструктор за замовчуванням не має жодного параметра, або для цього параметра є значення за замовчуванням. Якщо в класі не присутній визначений користувачем конструктор, компілятор створює новий, якщо потрібно, і називається конструктором за замовчуванням. Це вбудований громадський член класу. Цей конструктор матиме повний корпус і не має ініціалізатора. Конструктор за замовчуванням не забезпечує нічого конкретного, він просто виділяє об'єкт пам'яті. Конструктор класу X є поверхневим, якщо всі наступні твердження є істинними. Він визначається неявно. Якщо у X немає віртуальних базових класів і функцій. Усі базові класи, а не статичні члени X, мають тривіальні конструктори.
2. Параметризовані конструктори
Конструктор, який може прийняти аргументи, називається Параметризовані конструктори. Він може вказувати аргумент, коли це потрібно.
Код
class X (
int i;
public:
void abc(void);
void xyz(void);
// member function definitions
)
X 0b 1;
// default constructor for creating 0b1. hence user can use it,
// implicitly define default constructor is public
// member of the class
0b1. abc();
0b1. xyz();
3. Конструктор копіювання
Він використовується для ініціалізації та оголошення одного об'єкта від іншого об'єкта
integer 10(12);
визначив би об'єкт 10 і в той же час ініціалізував його до значення 12. Іншою формою цього твердження є
integer 10 = 12;
Процес називається ініціалізацією копіювання. Конструктор копій використовується, коли створюється тимчасовий об'єкт. Застосування конструктора копій полягає в наступному; Повернення об'єкта як значення функції Ініціалізація об'єкта іншим об'єктом того ж класу
Синтаксис
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Код
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Перевантаження конструктора
Якщо в одному класі використовується кілька конструкторів, то це називається перевантаження конструктора. Це дає нам кілька способів ініціалізації об'єктів у класі. Це підвищує гнучкість за рахунок наявності декількох конструкторів в одному класі.
Код
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
5. Двовимірний конструктор
Він як структура масиву і містить рядки та стовпці. Він містить масив рядків, де рядок являє собою рядок, а стовпець - значення рядка.
Код
// overloading class constructors
#include
using namespace std;
class CRectangle
(
int width, height;
public:
CRectangle ();
CRectangle (int, int);
int area (void)
(
return (width*height);
)
);
CRectangle::CRectangle ()
(
width = 7;
height = 5;
)
CRectangle::CRectangle (int a, int b)
(
width = a;
height = b;
)
int main ()
(
CRectangle rect (7, 5);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
)
Синтаксис
char arrayname(x)(y);
де 'x' - кількість рядків 'y' - кількість стовпців.
Кількість рядків має бути такою ж, як і кількість рядків у цьому масиві. Номер стовпця повинен бути більшим або однаковим до довжини рядка або він може бути плюс один
Приклад
Якщо в масиві є 8 рядків, а довжина найдовшого рядка - 10, масив визначається наступним чином
Char days(8)(11);
6. Приватний конструктор
Він використовується для створення об’єкта класу за один раз. Визначено, що клас не має декількох примірників класу. Це те саме, що й інші конструктори, але визначено як приватне. Він може отримати доступ лише до визначеного об'єкта цього класу.
Код
classroom()
(
private:
Тільки ту частину програми, яку можна отримати та визначити лише в приватному розділі
Висновок - Конструктор на С
Конструктор може приймати нульові або більше параметрів. Клас може визначати одного або багатьох конструкторів. Ми вирішуємо, який конструктор виконати під час створення об'єкта, передавши конструктору відповідний список аргументів, встановивши значення за замовчуванням для параметра конструктора. Покажчики не можна використовувати на конструкторах, оскільки їх адреси не можна вважати. Конструктори не можуть бути оголошені статичними, const або летючими.
Рекомендовані статті
Це посібник для конструктора в C. Тут ми обговорюємо використання конструктора, типів конструктора з прикладами, кодом та виходами. Ви також можете ознайомитись з іншими пов'язаними з нами статтями, щоб дізнатися більше -
- Копіювання конструктора на Java
- Масиви в програмуванні на С
- Конструктор в Python
- Конструктор у JavaScript
- C Матричне множення програмування