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

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

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

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

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

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

Про добавление заголовочных файлов в заголовочных файлах - C++
В который раз эта вещь засовывает мозги в блендер! Я про то, что не могу однозначно запомнить (основываясь на моих знаниях о директиве...

Массивы в заголовочных файлах - C++
в заголовочном файле в описании класса пишу: int _const_iMas = {0x63,0x7c,0x78,0x79}; В итоге компилятор подчёркивает знак '='...

О стандартных заголовочных файлах - C++
Не знаю в какую категорию отнести данное нубство, но все же: Часто использую некоторые возможности/функции для которых не делал...

Линковка, реализация в заголовочных файлах - C++
Ситуация следующая. Представим себет хедер, который содержит некоторый функционал и должен использоваться в нескольких проектах. Причем ...

Определение переменных в заголовочных файлах - C++
Здорова! Определил переменную в заголовочном фале от так #pragma once #ifndef _imya_zagol_fayla #define _imya_zagol_fayla ...

Объявлние классов в разных заголовочных файлах - C++
Приветствую всех участников форума. Есть 2 класса А и В. Каждый из содержит указатель на другой класс. Как сделать объявление классов в...

2
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
23.04.2014, 12:04 #2
Нет дублирования не будет, потому что ты подключаешь один и тот же header файл, поэтому обращение будет только к этой переменной всегда
1
DrOffset
7321 / 4421 / 1001
Регистрация: 30.01.2014
Сообщений: 7,259
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.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 12:25
Привет! Вот еще темы с ответами:

Использование указателей на контейнеры STL в заголовочных файлах - C++
Для использования указателей на I/O классы достаточно включить <iosfwd> который содержит опережающие объявления и таким образом появляется...

Куча ошибок в заголовочных файлах,вызванных из windows.h! - C++
с чем это может быть связано? этот же код без всяких изменений уже компилировался и работал... 1> Исходный код.cpp 1>c:\program...

Статические свойства классов - C++
Есть класс со статическим свойством class Data { protected: static char *str, *newStr; static unsigned long writedBytes,...

Блочная сортировка структур (Отсортировать массив структур по фамилии) - C++
Подскажите алгоритм блочной сортировки структур на языке С++. Мне нужно отсортировать массив структур по фамилии.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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