Конструктор в C - Использование и типы конструктора с примерами

Содержание:

Anonim

Введение в конструктор в C

Конструктор в C используется в управлении памятью программирования на C ++. Он допускает встроенные типы данных, такие как int, float и определяемые пользователем типы данных, такие как class. Конструктор в объектно-ориентированном программировании инициализирует переменную пользовательского типа данных. Конструктор помогает в создании объекта. Имя конструктора совпадает с именем объекта, но не имеет возвращаемого типа. Конструктор выполняется автоматически при создании объекта или специального члена. Он выделяет память для нового созданного объекта и может быть перегружен.

Код

// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)

Использование конструктора

  • Это специальный метод, который содержит то же имя, что и имя класса, и инициализирует объект при каждом его создании. Так что это просто и легко выполнить.
  • В основном используется для управления памятью. Они используются для инициализации и удаления блока памяти, когда он больше не требуется, с помощью опций New и Delete, как указано программистом.
  • Компилятор создает конструктор по умолчанию всякий раз, когда создается объект. Если вы не объявили конструктор, компилятор создаст его. Это полезно, потому что объект и функция в программе знают, что объект существует
  • Конструктор для объекта создается, когда экземпляр является объявленным объектом. Класс может иметь несколько конструкторов для разных ситуаций. Перегрузка конструктора повышает универсальность класса, поскольку в отдельном классе имеется много конструкторов.

Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12

Следовательно, конструктор перегружен разными значениями.

Типы конструктора в C

Основные типы конструктора объясняются следующим образом:

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

где «х» - количество строк, «у» - количество столбцов.

Количество строк должно быть таким же, как количество строк в этом массиве. Номер столбца должен быть больше или равен длине строки или может быть плюс один

пример

Если в массиве 8 строк и длина самой длинной строки равна 10, массив определяется следующим образом

Char days(8)(11);

6. Частный конструктор

Он используется для создания объекта класса за один раз. Определено, что у класса нет нескольких экземпляров класса. Он такой же, как и другие конструкторы, но определен как закрытый. Он может получить доступ только к определенному объекту этого класса.

Код

classroom()
(
private:

Только эта часть программы и может быть доступна и определена только в приватном разделе

Заключение - конструктор в C

Конструктор может принимать ноль или более параметров. Класс может определять один или несколько конструкторов. Мы должны решить, какой конструктор выполнить во время создания объекта, передав соответствующий список аргументов конструктору, установив значение по умолчанию для параметра конструктора. Указатели нельзя использовать в конструкторах, потому что их адреса нельзя учитывать. Конструкторы не могут быть объявлены как static, const или volatile.

Рекомендуемые статьи

Это руководство к конструктору в C. Здесь мы обсуждаем использование конструктора, типы конструктора с примерами, кодом и выходными данными. Вы также можете просмотреть другие наши статьи, чтобы узнать больше-

  1. Копировать конструктор в Java
  2. Массивы в Си Программирование
  3. Конструктор в Python
  4. Конструктор в JavaScript
  5. C умножение матриц программирования