Простые постоянные переменные в C++
Обычные постоянные переменные в C++ по умолчанию имеют внутреннюю связь. Предположим, если у меня есть следующее:
Я определяю переменную const в заголовочном файле (
const int var = 2
)Затем я включаю заголовок в два файла cpp.
Если я попытаюсь получить адрес этой переменной const (т.е. &var
) в обоих файлах cpp, будут ли эти два адреса одинаковыми? Также мне нужен небольшой рабочий код, чтобы проверить этот факт.
Мне пришлось опубликовать это как вопрос, потому что я не мог задать его там в комментариях к ответу, приведенному в этой теме, так как я новичок.
3 ответа
За C++
это не будет то же самое из-за внутренней связи - это 2 разных объекта. В C
это наоборот и const
будет иметь внешнюю связь, поэтому вы получите ошибку связи из-за переопределения.
тогда эти два адреса будут одинаковыми?
Нет. Поскольку заголовки включаются в файлы *.cpp во время компиляции, поэтому каждый *.cpp, содержащий ваш заголовок, будет создавать свою собственную константу.
Однако, если вы используете extern const int var;
в заголовке и установите значение по умолчанию в *.cpp, они должны быть одинаковыми.
Переменные будут иметь разные адреса. Также возможно, что если вы нигде не будете ссылаться на адрес переменной, переменная будет заменена его значением во время компиляции, а в двоичном файле вы вообще не найдете значение переменной.