260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|||||||||||
1 | |||||||||||
Static члены класса05.01.2016, 08:43. Показов 7837. Ответов 70
Метки нет (Все метки)
Здравствуйте.
есть класс, например
Например:
0
|
05.01.2016, 08:43 | |
Ответы с готовыми решениями:
70
класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции) Static члены классов Static член класса Static-член класса |
Модератор
|
|
08.01.2016, 17:47 | 61 |
Вот на этой мажорной ноте и остановимся.
Добавлено через 22 часа 57 минут Тема открыта по просьбе автора. Убедительная просьба ко всем ораторам - высказываться по существу, в манере доброжелательной и уважительной.
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
||||||
08.01.2016, 18:54 [ТС] | 62 | |||||
gru74ik, спасибо.
есть код:
Добавлено через 18 минут стр 142 стандарта ISO/IEC 14882:2014(E) - С++14 так вот, там примеры когда пары приводятся. с английским не совсем плохо, но в данном случае надо предмет понимать. что говорится о линковке и что линковка может быть внешняя(external) и внутренняя(internal) я понимаю, а почему приводятся два примера к ряду и типа f() // still has internal linkage
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
08.01.2016, 18:54 | 63 |
Если имеется в виду, что переменная закрыта в private класса shared, то да.
А так, из самого класса shared, будь у него еще какие-то функции, вполне можно что-то сделать.
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|
08.01.2016, 18:57 [ТС] | 64 |
так в классе же ничего нет, те спосбоа к ней обратиться, а всякими shared::, тк она в private нельзя вот и получается что никак несмотря на то, что она static.
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
||||||
08.01.2016, 19:06 | 65 | |||||
Объявлений может быть сколько угодно, а определение одно (ODR). В данном случае это просто несколько объявлений одной и той же функции, а не перегрузка.
Так вот, в стандарте говорится, что при наличии нескольких объявлений, где сначала указан один тип связывания (внутреннее связывание, посредством static), а затем явно не указан (по умолчанию внешнее связывание), то второе объявление соответствует первому, т.е. тоже имеет внутреннее связывание, в данном случае. При этом цитата: Говорит о том, что каждый набор перегруженных функций может иметь разные типы связывания. Т.е. например
0
|
6 / 6 / 1
Регистрация: 27.12.2014
Сообщений: 67
|
|
08.01.2016, 19:06 | 66 |
Private не соседствует со static. Private это спецификатор доступа, а static спецификатор способа хранения в памяти, так сказать.
Такое ощущения, что вы пытаетесь их связать их как-то вместе. Было бы здорово, если бы вы объяснили, что вас смущает в static.
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
08.01.2016, 19:07 | 67 |
0
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
||||||
08.01.2016, 19:25 [ТС] | 68 | |||||
а почему
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
08.01.2016, 19:39 | 69 |
extern - это по умолчанию. Т.е. функция (и глобальная переменная), которая не static и не в анонимном namespace, не в локальном классе - extern.
Добавлено через 5 минут Если интересует более полная информация, здесь: http://en.cppreference.com/w/c... on#Linkage
1
|
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
|
|
08.01.2016, 19:41 [ТС] | 70 |
я имел в виду что несмотря на то, что переменная хранится отдельно от класса и вроде вообще ни одного экземпляра класса не создано, но мы ее все равно никак не "возьмем".
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
08.01.2016, 19:46 | 71 |
Идеологически правильно говорить "отдельно от объекта". Статик переменная класса подчиняется правилам ограничения доступа, которые задают public/protected/private наравне с остальными членами класса. Все особенности связанные с доступом (наследование, дружба) также сохраняются. Т.е. переменная именно что принадлежит классу, но не является частью объекта класса.
1
|
08.01.2016, 19:46 | |
08.01.2016, 19:46 | |
Помогаю со студенческими работами здесь
71
Static поля класса Static в описании метода класса Статические методы класса (static) Инициализация static члена класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |