1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 66
|
|
1 | |
Статический указатель06.04.2017, 18:11. Показов 8614. Ответов 8
Метки нет (Все метки)
Привет!
Возникли вопросы в процессе изучения C/С++. Если объявить статическую (static) локальную переменную, то эта переменная будет размещена в определенной области памяти (подобной той, в которую помещается глобальная переменная), но доступна она будет только в пределах этой функции, а так же она будет сохранять свое значение между вызовами этой функции. Если объявить глобальную переменную, то она будет доступна только в пределах файла. И сами вопросы: 1. Если объявить статический глобальный указатель, чем он будет отличаться от обычного глобального указателя? 2. Если объявить статический локальный указатель, чем он будет отличаться от обычного локального указателя? 3. В какой именно области памяти размещаются статические переменные? В той же, что и глобальные переменные? 4. Если объявить статическую переменную в структуре (struct), она будет работать так же, как и в классах или как в функции?
0
|
06.04.2017, 18:11 | |
Ответы с готовыми решениями:
8
Статический указатель Указатель на статический массив Не работает статический указатель Указатель на статический трехмерный массив |
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
06.04.2017, 19:09 | 2 |
Сообщение было отмечено java_user как решение
Решение
1) Гугл подсказывает что если в двух разных cpp есть одноименные глобальные static переменные, линкер не будет ругаться матом.
2) Инициализация будет выполнена один раз, в момент первого обращения. Дальше указатель будет работать как глобальная переменная, только ее будет видно только из данной функции. 3) Да. 4) Классы отличаются от структур только тем что их члены по умолчанию приватные. В остальном это синонимы.
1
|
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 66
|
|
06.04.2017, 19:26 [ТС] | 3 |
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||||||
06.04.2017, 19:29 | 4 | |||||
Полные синонимы во всем. Включая случай, когда вы пытаетесь объявить в структуре/классе статическую переменную.
1
|
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 66
|
|
06.04.2017, 19:35 [ТС] | 5 |
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
06.04.2017, 19:37 | 6 |
Нет, я имел ввиду именно полные синонимы. В структуре точно также можно объявлять методы. Можно точно также перегружать операторы. Все будет работать точно также как в классе. Единственная разница - у структуры все это по умолчанию публичное, а у класса - приватное.
1
|
1 / 1 / 0
Регистрация: 07.04.2016
Сообщений: 66
|
|
06.04.2017, 19:44 [ТС] | 7 |
Но проблема в том что к статической переменной в классе можно обратиться не создавая объекта этого класса
SomeType::var Добавлено через 2 минуты Зачем тогда ввели классы в C++ если это синонимы?
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
06.04.2017, 19:49 | 8 |
Сообщение было отмечено java_user как решение
Решение
Ну так и к статической переменной в структуре можно.
Фиг его знает. Возможно это связанно с тем, что изначально C++ перед компиляцией переводился в чистый Си. И переводилке было удобней ориентироваться на новое ключевое слово, чтобы понять "вот здесь переводим, здесь оставляем как было". Возможно, авторам ключевого слова class не нравилось что у структур все по умолчанию публичное. В любом случае, современная ценность подобного нововведения действительно крайне сомнительна.
1
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|
06.04.2017, 19:53 | 9 |
0
|
06.04.2017, 19:53 | |
06.04.2017, 19:53 | |
Помогаю со студенческими работами здесь
9
Статический член указатель на класс Статический указатель класса и конструктор в private Указатель на статический массив как параметр шаблона Статический указатель класса на объект этого же класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |