![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Статическая функция класса понятно: одна для всех объектов данного класса. А вот, статическая переменная в виртуальном методе класса - это как будет?
|
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 3 Всего: 73 |
bel_nikita, а почему в методе, а не как член класса?
ИМХО, будет для каждого свой, т.к. нет видимости вне метода. -------------------- Теперь при чем :P |
|||
|
||||
volvo877 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 1 Всего: 116 |
bel_nikita, а проверить?
В результате имеем
Значит, все-же переменная-то одна... |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
А какая разница? Для обычной функции то одна...без разницы для виртуальной или нет...виртуальная функция тоже функция ![]() ![]() |
|||
|
||||
Aveic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.2.2006 Где: Да все мы из одно й ямы Репутация: нет Всего: нет |
вопрос, какой-то надуманный... не мог же произойти конфликт между эти статическими переменными,
функции то для каждого объекта разные... |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 3 Всего: 73 |
При чем тут конфликт? Речь о том будет доступ или нет... -------------------- Теперь при чем :P |
|||
|
||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Забыл добавить что написанное мной действует в области одной функции...
volvo877 К примеру если наследовать от класса B
получим
Добавлено @ 15:38 Но тут уж полиморфизм невиновен ![]() код
также выдаст нам
|
||||||||
|
|||||||||
volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 1 Всего: 116 |
azesmcar, насколько я понял из вопроса:
подразумевалось именно, будет ли переменная общей для всех экземпляров одного класса... В твоем примере - уже вводится второй... |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 3 Всего: 73 |
А мне вот стало интересно, возможно ли обратиться к этой переменной вне метода? С одной стороны переменная локальна и невидна, с другой стороны размещение в памяти не меняется... Можно ли создать указатель на неё?
-------------------- Теперь при чем :P |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
А я вот другого не понял...какая разница? статическая, нестатическая...функция все равно одна на все обьекты класса...просто this разный передается...не xотите же вы сказать что при создании каждого обьекта класса заново копируются функции...причем тут это? Я думаю "Для разныx функций разные, для одной одно и тоже" звучит как ответ... Ignat можно так
получим 0 1 Добавлено @ 16:01 Кстати static int& f() можно заменить на int& f()...дело вкуса ![]() Добавлено @ 16:04 со static int & можно даже вне класса
|
||||||
|
|||||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Просто так - нельзя, она ниоткуда не видима, кроме метода, где объявлена. Но, поскольку она выделена в глобальной памяти, на нее вполне можно вернуть ссылку или указатель, из этого метода, и спокойно пользоваться. У статической переменной, объявленной внутри функции, есть еще одна особенность - она конструируется при первом входе в этот метод, а не тогда, когда обычные глобальные переменные. Иногда это очень удобно: некоторые переменные можно конструировать только после инициализации, скажем, каких-то ресурсов, а хочется тем не менее иметь их статическими... -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |