Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SaweR
29 / 29 / 1
Регистрация: 29.09.2009
Сообщений: 177
#1

Статические свойства структур в заголовочных файлах - C++

23.04.2014, 12:01. Просмотров 257. Ответов 2
Метки нет (Все метки)

Всем привет. Не могу найти в интернете инфу о том, как ведут себя статические свойства структур определённых в заголовочных файлах и используемых в нескольких местах (этакая модульность).
Вот к примеру есть у меня хедер файл с определённой в нём структурой:
C++
1
2
3
4
struct Constants
{
    static const unsigned int Female = 10;
};
И буду я подключать этот хедер к разным файлам реализации. Будет ли какое-то дублирование переменной Female или адрес в памяти будет один и тот же?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 12:01     Статические свойства структур в заголовочных файлах
Посмотрите здесь:

Отличие заголовочных файлов C++
C++ Объявлние классов в разных заголовочных файлах
C++ Массивы в заголовочных файлах
Подключение заголовочных файлов. C++
C++ Объявление заголовочных файлов
C++ Назначение заголовочных файлов
C++ О стандартных заголовочных файлах
C++ Статические свойства классов
Подключение заголовочных файлов C++
Определение переменных в заголовочных файлах C++
Линковка, реализация в заголовочных файлах C++
C++ Куча ошибок в заголовочных файлах,вызванных из windows.h!

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
23.04.2014, 12:04     Статические свойства структур в заголовочных файлах #2
Нет дублирования не будет, потому что ты подключаешь один и тот же header файл, поэтому обращение будет только к этой переменной всегда
DrOffset
6851 / 4062 / 927
Регистрация: 30.01.2014
Сообщений: 6,859
23.04.2014, 12:25     Статические свойства структур в заголовочных файлах #3
SaweR, в таком виде не будет. Потому что в этой записи есть только declaration. Если использовать Female только как интегральную константу, то definition и не понадобится. Адреса у такой константы не будет, это сущность времени компиляции.

Но вот если потребуется взять адрес:
C++
1
&Constants::Female;
то будет нужно и definition (т.к. константа уже будет размещаться в памяти):
C++
1
2
3
4
5
struct Constants
{
    static const unsigned int Female = 10;
};
const unsigned int Constants::Female; //definition
Если сделать его прямо в заголовочном файле, то будет ошибка множественного определения при включении его в разные cpp. Поэтому, definition стоит вынести в какой-то отдельный cpp, например в Constants.cpp.
Yandex
Объявления
23.04.2014, 12:25     Статические свойства структур в заголовочных файлах
Ответ Создать тему
Опции темы

Текущее время: 07:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru