Konstruktor w C - Zastosowania i typy konstruktora z przykładami

Spisie treści:

Anonim

Wprowadzenie do konstruktora w C.

Konstruktor w C jest używany do zarządzania pamięcią programowania w C ++. Umożliwia wbudowane typy danych, takie jak int, float i typy danych zdefiniowane przez użytkownika, takie jak klasa. Konstruktor w programowaniu obiektowym inicjuje zmienną typu danych zdefiniowanego przez użytkownika. Konstruktor pomaga w tworzeniu obiektu. Nazwa konstruktora jest taka sama jak nazwa obiektu, ale nie ma typu zwracanego. Konstruktor jest wykonywany automatycznie po utworzeniu obiektu lub elementu specjalnego. Przydziela pamięć dla nowo utworzonego obiektu i może zostać przeciążona.

Kod

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

Zastosowania konstruktora

  • Jest to specjalna metoda o tej samej nazwie co nazwa klasy i inicjująca obiekt za każdym razem, gdy jest tworzony. Jest więc prosty i łatwy do wykonania.
  • Służy głównie do zarządzania pamięcią. Służą do inicjowania i usuwania bloku pamięci, gdy nie jest już wymagany, mając opcje Nowe i Usuń określone przez programistę
  • Kompilator tworzy domyślny konstruktor za każdym razem, gdy obiekt jest tworzony. Gdy nie zadeklarujesz konstruktora, kompilator utworzy taki. Jest to przydatne, ponieważ obiekt i funkcja programu wiedzą, że obiekt istnieje
  • Konstruktor obiektu jest tworzony, gdy instancja jest zadeklarowanym obiektem. Klasa może mieć wiele konstruktorów dla różnych sytuacji. Przeciążenie konstruktora zwiększa wszechstronność klasy poprzez posiadanie wielu konstruktorów w pojedynczej klasie.

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

Dlatego konstruktor jest przeciążony różnymi wartościami.

Rodzaje konstruktorów w C.

Główne typy konstruktora wyjaśniono w następujący sposób:

1. Domyślny konstruktor

Domyślny konstruktor nie ma parametru lub obecny parametr ma wartości domyślne. Jeśli w klasie nie ma konstruktora zdefiniowanego przez użytkownika, kompilator tworzy nowy, jeśli to konieczne, i jest on wywoływany jako domyślny konstruktor. To jest wbudowany publiczny członek klasy. Ten konstruktor będzie miał pełne ciało i nie będzie inicjalizatora. Domyślny konstruktor nie zapewnia niczego konkretnego, po prostu przydziela pamięć do obiektu. Konstruktor klasy X jest powierzchowny, jeśli wszystkie poniższe stwierdzenia są prawdziwe. Jest to zdefiniowane domyślnie. Jeśli X nie ma wirtualnych bazowych klas i funkcji. Wszystkie klasy podstawowe, a nie statyczne elementy X, mają trywialne konstruktory.

2. Sparametryzowane konstruktory

Konstruktor, który akceptuje argumenty, nazywa się konstruktorami sparametryzowanymi. Może podać argument, gdy jest potrzebny.

Kod

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. Kopiuj konstruktora

Służy do inicjalizacji i zadeklarowania jednego obiektu z innego obiektu

integer 10(12);

zdefiniuje obiekt 10 i jednocześnie zainicjuje go do wartości 12. Inną formą tego wyrażenia jest

integer 10 = 12;

Proces ten nazywa się inicjowaniem kopii. Konstruktor kopii jest używany za każdym razem, gdy tworzony jest obiekt tymczasowy. Zastosowanie konstruktora kopiowania jest następujące; Zwrócenie obiektu jako wartości funkcji Inicjalizacja obiektu przez inny obiekt tej samej klasy

Składnia

class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);

Kod

class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)

4. Przeciążenie konstruktora

Gdy w tej samej klasie jest używanych wiele konstruktorów, nazywa się to Przeciążanie konstruktorów. Daje nam wiele sposobów inicjowania obiektów w klasie. Zwiększa elastyczność dzięki posiadaniu wielu konstruktorów w jednej klasie.

Kod

#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. Dwuwymiarowy konstruktor

Ma strukturę tablicy i zawiera wiersze i kolumny. Zawiera tablicę ciągów, w których wiersz reprezentuje ciąg, a kolumna reprezentuje wartość ciągu.

Kod

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

Składnia

char arrayname(x)(y);

gdzie „x” to liczba wierszy „y” to liczba kolumn.

Liczba wierszy powinna być taka sama jak liczba łańcuchów w tej tablicy. Numer kolumny powinien być większy lub równy długości łańcucha lub może być plus jeden

Przykład

Jeśli w tablicy jest 8 łańcuchów, a długość najdłuższego ciągu wynosi 10, tablica jest definiowana w następujący sposób

Char days(8)(11);

6. Prywatny konstruktor

Służy do jednorazowego utworzenia obiektu klasy. Jest zdefiniowane, że klasa nie ma wielu instancji klasy. Jest taki sam jak inne konstruktory, ale zdefiniowany jako prywatny. Może uzyskać dostęp tylko do obiektu tej klasy zdefiniowanej.

Kod

classroom()
(
private:

Tylko ta część programu może być dostępna i zdefiniowana tylko w sekcji prywatnej

Wniosek - Konstruktor w C

Konstruktor może przyjmować zero lub więcej parametrów. Klasa może definiować jeden lub wiele konstruktorów. Od nas zależy, który konstruktor ma zostać wykonany podczas tworzenia obiektu, przekazując odpowiednią listę argumentów do konstruktora, ustawiając wartość domyślną parametru konstruktora. Wskaźników nie można używać w konstruktorach, ponieważ ich adresy nie mogą być brane pod uwagę. Konstruktory nie mogą być deklarowane jako statyczne, stałe lub lotne.

Polecane artykuły

To jest przewodnik po Konstruktorze w C. Tutaj omawiamy użycie konstruktora, typy konstruktora z przykładami, kodem i danymi wyjściowymi. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej-

  1. Kopiuj konstruktora w Javie
  2. Tablice w programowaniu C.
  3. Konstruktor w Pythonie
  4. Konstruktor w JavaScript
  5. Mnożenie macierzy programowania C.