![]() |
Ярпортал: форум Ярославля ![]() |
![]() ![]() ![]() ![]() |
Здравствуйте, Гость ( Вход·Регистрация ) | Сделать Yarportal.Ru стартовой страницей |
![]() |
Страницы: (2) [1] 2 ( Перейти к первому непрочитанному сообщению ) | ![]() ![]() ![]() |
Алан Керманец |
Дата 23.10.2007 - 05:30
|
Unregistered ![]() |
Чем отличается определение функции - компонента класса со спецификатором static от определения со спецификатором friend?
|
|
NuINu |
Дата 23.10.2007 - 08:34
|
Чатланин ![]() ![]() Профиль Группа: Пользователи Сообщений: 76 Пользователь №: 24325 Регистрация: 24.09.2007 - 14:43 ![]() |
а в документации что пишут на эту тему? или это вопрос что то типа КВНа?
|
Одиночка |
Дата 23.10.2007 - 08:37
|
![]() хихикающий байкер... ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 2960 Пользователь №: 11055 Регистрация: 2.10.2006 - 13:31 ![]() |
я си знаю плоха но помоему второе ето "наследование"...
|
ASudakov |
Дата 23.10.2007 - 09:10
|
||||
Unregistered ![]() |
я бы поставил вопрос по-другому - а что между этими спецификаторами общего???
|
||||
|
PadoNaK |
Дата 23.10.2007 - 10:08
|
![]() я кусаюсь ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 1989 Пользователь №: 8348 Регистрация: 31.05.2006 - 09:11 ![]() |
ппц....
Алан Керманец книжки то читать не модно? |
NuINu |
Дата 23.10.2007 - 10:44
|
Чатланин ![]() ![]() Профиль Группа: Пользователи Сообщений: 76 Пользователь №: 24325 Регистрация: 24.09.2007 - 14:43 ![]() |
ASudakov
по прочтении выдежек, любезно предоставленных вами, я сделал вывод, общего между ними то.... что они являются спецификаторами. ![]() ![]() ![]() |
Алан Керманец |
Дата 23.10.2007 - 11:09
|
Unregistered ![]() |
NuINu Общего между ними то, что они регулируют доступ к членам класса. Со спецификатором friend всё понятно, однако static был и остаётся весьма туманным.
PadoNaK Почему вместо того, чтобы нормально ответить и понятно объяснить на примере, Вы строите из себя капризного гуру? Не знаете, так и скажите. Или же Вы, следуя новейшим веяниям, используете форум заместо чата? Что касается литературы, то во всех имеющихся у меня книгах касательно спецификатора static написано примерно то же самое, что процитировал уважаемый ASudakov. Но ничерта не ясно. Может ли кто-нибудь на примере пояснить необходимость применения спецификатора static к членам класса? Заранее благодарю. |
|
anka1010 |
Дата 23.10.2007 - 11:56
|
![]() Бонифаций ![]() ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 11296 Пользователь №: 9789 Регистрация: 13.08.2006 - 13:17 ![]() |
Иногда нужно определить элемент класса так, чтобы было возможно использовать его независимо от объекта этого класса.
К элементам класса обычно обращаются через объект этого класса, а если элемент класса (функцию или переменную) определить как static, то к нему (элементу) можно обращаться до того, как создан объект класса. (с) неточная цитата из книшки по Яве ![]() Например, в Яве статичной является функция main. Потомушто она вызывается до создания какого бы то ни было объекта. |
PadoNaK |
Дата 23.10.2007 - 11:58
|
![]() я кусаюсь ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 1989 Пользователь №: 8348 Регистрация: 31.05.2006 - 09:11 ![]() |
Алан Керманец
на примере не могу...не занимался...не знаю... Спецификатор класса памяти static Спецификатор класса памяти static может использоваться в объявлениях функций и переменных с контекстом файла и ло- кальным контекстом для обозначения внутреннего типакомпонов- ки. Static также указывает, что переменная должна иметьста- тическую продолжительность существования. При отсутствии конструкторовили явныхинициализаторов статические переменные инициализируются 0 или null. В С++ компоненты класса,статические данные, имеет то же значение длявсех вхождений класса. Члены класса, статические функции, не зависят от других вхождений класса. |
ASudakov |
Дата 23.10.2007 - 12:47
|
||
Unregistered ![]() |
Алан Керманец
члены класса - это переменные и функции. static применительно к переменным позволяет разделить одну переменную между всеми экземплярами данного класса. например, пользуясь такой переменной, можно реализовать примитивную синхронизацию между ними (хотя это только иллюстративный метод) или подсчитать количество живущих экземпляров (инкрементом в конструкторе, декрементом в деструкторе). static относительно функций означает, что эта функция имеет доступ только к вышеупомянутым статическим переменным класса. навскидку - это скорее для дисциплины программирования сделано :) мне по крайней мере смысл туманен.. да, как и в Яве, статическую переменную можно использовать до создания экземпляров класса. http://www.intuit.ru/department/pl/plintro/12/ |
||
|
Алан Керманец |
Дата 23.10.2007 - 12:54
|
Unregistered ![]() |
ASudakov То есть, в некотором смысле, static-члены являются глобальными среди всех экземпляров данного класса? Отлично, просто и понятно. Огромное спасибо :=)
|
|
ASudakov |
Дата 23.10.2007 - 12:58
|
Unregistered ![]() |
да, кроме того, дальнейшее чтение показало, что статик-функции также могут быть вызваны без создания экземпляров!
http://www.programmersclub.ru/25 как-то у меня в документации это слабо отражено.. |
|
Weber |
Дата 23.10.2007 - 13:03
|
||
![]() Hijo de la Luna ![]() ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 10257 Пользователь №: 2365 Регистрация: 4.11.2004 - 17:25 ![]() |
Алан Керманец
Ничего общего у них нет. (!) static-поле (как функция, так и переменная) одно на все объекты данного класса, т.е. фунция объявленная как static не имеет ссылку на this, её в принципе нет. По сути некое подобие глобальной функции или переменной (с нюансами разумеется). friend связан с доступом в private-часть класса, если функция или класс объявлены внутри класса как friend, то они к классу не относятся - просто какие-то внешние, однако friend позволяет получить им доступ к закрытой части класса. А вообще, учим С++ и вопросов тогда не будет. |
||
Алан Керманец |
Дата 23.10.2007 - 14:10
|
Unregistered ![]() |
Всё, я понял. Всем спасибо за помощь :=)
|
|
Weber |
Дата 23.10.2007 - 18:03
|
![]() Hijo de la Luna ![]() ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Пользователи Сообщений: 10257 Пользователь №: 2365 Регистрация: 4.11.2004 - 17:25 ![]() |
Пожалуйста!
![]() |
![]() |
![]() ![]() ![]() |
Правила Ярпортала (включая политику обработки персональных данных)