![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 26.09.2007
Сообщений: 9
|
![]()
Создается класс, содержащий статическую функцию-член. Далее в программе создается несколько объектов этого класса. При обращении разные объектов к это статиской функции будет вызываться одна и таже функция или , всетаки, у каждого объекта будет свой экземпляр?
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 25.09.2007
Сообщений: 189
|
![]()
скажу по секрету, что и нестатические функции находятся в одном экземпляре. просто им вначале передается указатель на объект, откуда ты их вызываешь. а статическим такой указатель не передается
|
![]() |
![]() |
![]() |
#3 | |
Регистрация: 26.09.2007
Сообщений: 9
|
![]() Цитата:
например, объект1 с помощью этой функции записывает в файл1, а объект2 - в файл2 |
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 25.09.2007
Сообщений: 189
|
![]() Цитата:
ЗЫ. уточни, какой "этой"? статические функции не могут обращаться к нестатическим данным. а нестатичекие - та на здоровье! будет именно так, как ты говоришь... |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 26.09.2007
Сообщений: 9
|
![]()
Задача такая. Пишу класс для работы с COM портом. Чтение порта асинхронное и осуществляется в отдельном потоке. Не могу решить как реализовать функцию потока: как функцию-член класса или как отдельную функцию. Неопределенность вызвана тем, что может появиться необходимость создать несколько объектов этого класса для работы одновременно с несколькими COM портами одновременно.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 25.09.2007
Сообщений: 189
|
![]()
еще раз. статическая функция отличается от обычной только тем, что она может использовать статические переменные-члены класса. ну, и еще областью видимости.
так что тут большой разницы нет |
![]() |
![]() |
![]() |
#7 |
Регистрация: 26.09.2007
Сообщений: 9
|
![]()
Это я знаю. Еще она отличается тем, что она существует уже до создания объекта класса. И к ней также можно обратиться по имени класса, а не по имени объекта. Но что произойдет, когда я создам два объекта класса, содержащего статическую функцию, являющуюся при этом функцией потока? Будет ли у меня при этом два потока? Не произойдет ли каких-либо конфликтов?
Последний раз редактировалось Дмитрий_Ч; 02.10.2007 в 14:43. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 25.09.2007
Сообщений: 189
|
![]()
2 потока создаются ТОЛЬКО с помощью вызова функции. если у тебя он (вызов) записан в конструкторе, то да, сколько раз ты создашь объект, столько раз вызовется конструктор -> функция CreateThread -> твоя статическая функция. Но для каждого потока будут делаться свои копии переменных, создаваемых в статической функции, так что просто от 2х объектов класса ничего страшного не произойдет.
ЗЫ. Страшное может произойти, если статическая функция использует статические переменные и вообще, если 2 экземпляра этой функции будут работать с одними и теми-же данными. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 26.09.2007
Сообщений: 9
|
![]()
поток создается не в конструкторе, и функция потока использует статические переменные класса.
Если интересно, могу завтра исходник прислать, только скажи куда слать |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 25.09.2007
Сообщений: 189
|
![]()
чесно говоря, не особо интересно, уж извини
![]() задача достаточно стандартная а насчет того, что функция потока использует статические переменые класса, тут могут быть (а могут и не быть) большие проблемы к примеру, если 1й поток будет записывать в переменную, а в это же время 2й поток будет ее читать, то есть шанс, что 2й поток прочтет какой-то мусор. Для решения, по идее. используется специальное ключевое слово в C++ (забыл, какое ![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Экспорт класса из ДЛЛ | SunKnight | Общие вопросы Delphi | 2 | 21.05.2008 19:31 |
создание класса | Siren | Помощь студентам | 1 | 07.05.2008 19:19 |
Чем различаются функции чтения класса istream C++ | Go6a | Помощь студентам | 3 | 25.04.2008 11:04 |
Автоматический вызов функции класса | Flaton | Общие вопросы C/C++ | 4 | 19.10.2007 17:56 |
Создания Класса | Mickle | Общие вопросы Delphi | 1 | 30.04.2007 00:44 |