Конструктор — это особый тип функции-члена, задачей которой является инициализация объектов своего класса. Он не имеет возвращаемого типа, поэтому не может использовать ключевое слово return и неявно вызывается при создании объекта.
- Конструктор также используется для решения проблемы инициализации.
- Он вызывается после создания объекта.
- То же имя, что и у класса.
Конструктор, определенный вне класса
Конструктор может быть определен вне класса, но он должен быть объявлен внутри класса. Здесь вы будете использовать оператор разрешения области видимости.
Синтаксис определения конструктора вне класса:
class class_name {
public:
class_name();
};// Constructor definition outside Class
class_name::class_name()
{
}
Пример:
С++
// C++ program to define
// constructor outside the
// class
#include <iostream>
using
namespace
std;
class
GeeksForGeeks {
public
:
int
x, y;
// Constructor declaration
GeeksForGeeks(
int
,
int
);
// Function to print values
void
show_x_y() {
cout << x <<
" "
<< y << endl;
}
};
// Constructor definition
GeeksForGeeks::GeeksForGeeks(
int
a,
int
b)
{
x = a;
y = b;
cout <<
"Constructor called"
<< endl;
}
// Driver code
int
main()
{
GeeksForGeeks obj(2, 3);
obj.show_x_y();
return
0;
}
Выход
Constructor called 2 3
Причины для определения конструктора вне класса
Ниже приведены некоторые из причин, по которым предпочтительнее определять конструкторы вне класса:
- Нет зависимости во время компиляции: можно поместить определение класса в заголовочный файл, а определение конструктора — в файл реализации, который будет скомпилирован.
- Удобочитаемость и более чистый код. Основная причина заключается в том, что конструктор определяется вне класса для удобочитаемости. Поскольку можно разделить объявления в заголовочные файлы и реализации в исходные файлы.
Пример:
С++
// Header file
// Save this code with .h extension
// For example- GeeksForGeeks.h
#include <bits/stdc++.h>
using
namespace
std;
class
ClassG {
public
:
int
a, b;
// Constructor declaration
ClassG();
// Function to print values
void
show()
{
cout << a <<
" "
<< b;
}
};
Файл: geek.cpp
С++
// Adding GeeksForGeeks.h File
#include"GeeksForGeeks.h"
#include<bits/stdc++.h>
using
namespace
std;
// Constructor definition
ClassG::ClassG()
{
a = 45;
b = 23;
}
// Driver code
int
main()
{
// This will call the
// constructor
ClassG obj;
// Function call
obj.show();
}
Выход:
45 23