Как определить конструктор вне класса в C++?

Как определить конструктор вне класса в C++ Программирование и разработка

Конструктор — это особый тип функции-члена, задачей которой является инициализация объектов своего класса. Он не имеет возвращаемого типа, поэтому не может использовать ключевое слово 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

Читайте также:  Как найти последнее вхождение строки в файловом Linux?
Оцените статью
bestprogrammer.ru
Добавить комментарий