![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ksili |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
В программе (не моей) есть h-файл, содержащий такие строки:
то есть в структуре есть две функции. Зачем это было надо городить? В чём отличие от класса? Что может нехорошего произойти при создании экземпляров такой структуры из разных потоков? Я интересуюсь этим, т.к. данный код используется в dll, которая внедряется в другие процессы и, как показало логгирование, на строке
происходит, что-то нехорошее. Приложение (мое, оконное) продолжает вроде работать, не виснет и никаких окошек с ошибками не вылетает. Но вот dll-ка, которая должна внедряться в появляющиеся окна (свои и чужие) то ли не внедряется, то ли не выполняет свои функции. Происходит это не на первом и не на втором вхождении в такую строку. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
ещё одно отличие структуры от класса - разный спецификатор доступа при дефолтном наследовании.
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Что же может произойти плохого при создании такого объекта? Конструктора же вроде нет. Просто выделяется память?
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ничего. Структура в С++ это тот же класс, только по умолчанию все члены открыты и наследование от него идет открыто (тоже по умолчанию). А конструктор, деструктор, копирующий конструктор и оператор присваивания для структуры генерируются (если не написаны и используются) также как и для класса. |
|||
|
||||
| Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Ну напишите вместо struct - class, и и обьявите все члены public. -------------------- ????? ??, ??????? ?????. |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
как это ничего? вот например, член структуры: WCHAR _url[512]; для него память не нужна? Я ж не говорю, что она выделяется динамически.
Что это изменит? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
ksili
Еще раз говорю. Структура и класс в С++ - абсолютно тоже самое. Никакой разницы, структура или класс. Если работает в классе, будет работать и в структуре.
нужна, и она выделяется.
и
тоже самое, будут работать они одинаково, никакой разницы в использовании за исключением описанного выше. Добавлено через 28 секунд
ваше воспирятие |
||||||||
|
|||||||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
На вопрос
ответили. Спасибо. Но как насчёт
Собственно, ответ на него более интересен. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ответный вопрос..а что может произойти при создании экземпляров класса из разных потоков? Ничего если конструктор не обращается к глобальным переменным, если обащается возможно понадобится синхронизация. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Члены-функции являются членами структуры/класса, а не созданных объектов. Т.е их декларации используется для установления прав доступа и области видимости, но они (члены-функции) не присутствуют в созданных объектах, в отличии от членов-данных. т.е объект (экземпляр) структуры, описанной с функциями, ничем не отличается от объекта структуры, описанной без членов-функций, и ничем не отличается от объекта класса. Это сообщение отредактировал(а) mes - 21.4.2009, 10:36 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |