Где и в каких случаях правильно использовать extern? Собственно, сабж.
Вопрос возник из ситуации. Есть класс, в методах которого используется экземпляр другого класса. В каждом методе я создавал этот экземпляр.

21 Авг 2019 в 07:04
207 +1
0
Ответы
1

Использование ключевого слова extern в C++ рекомендуется в следующих случаях:

Для доступа к переменным или функциям, которые были объявлены в другом файле (к примеру, другом исходном файле или библиотеке).

Пример:

// В другом файле
extern int globalVariable; // объявление
// В текущем файле
#include <iostream>
extern int globalVariable; // использование
int main() {
std::cout << globalVariable << std::endl;
return 0;
}Для разрешения циклических зависимостей между классами.

Пример:

// ClassA.hpp
#ifndef CLASSA_HPP
#define CLASSA_HPP
#include "ClassB.hpp"
class ClassA {
public:
void methodA();
private:
ClassB instance;
};
#endif
// ClassB.hpp
#ifndef CLASSB_HPP
#define CLASSB_HPP
class ClassA; // forward declaration
class ClassB {
public:
void methodB(ClassA* a);
};
#endif
// ClassA.cpp
#include "ClassA.hpp"
void ClassA::methodA() {
instance.methodB(this);
}
// ClassB.cpp
#include "ClassB.hpp"
#include "ClassA.hpp"
void ClassB::methodB(ClassA* a) {
// do something
}

В вашем конкретном случае, если вы создаете экземпляр другого класса в каждом методе, может быть более оптимальным использовать создание этого экземпляра в конструкторе вашего класса или хранить его как член класса. В зависимости от конкретной ситуации можно также применить методы паттерна проектирования "Singleton" или "Factory".

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир