
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
09.10.2006, 14:25
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Есть зачаток класса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Код: plaintext ElfPGP((HWND)NULL); как будто кроет в себе вызов деструктора. Они отрабатывают сразу один за другим. Почему??! Даже исключений не возникает никаких. Глаза уже сломал. Не понимаю. ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ [SRC c++][/SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 14:32
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
MS VS 2005 / Win32 project ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 14:34
|
|||
|---|---|---|---|
|
|||
Перегруженный конструктор |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. это не вызов конструктора без параметра.. это порождение временного объекта, который тут же выходит из области видимости сделайте приватную функцию инициализации и дергайте ее из обоих конструкторов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 14:36
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Однажды меня колбасило... и я искал функцию - постконструктор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 14:38
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
В данном случае можно использовать параметр по умолчанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:09
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
(`yka...конструктор без параметров вызывает перегруженный конструктор с параметром... может быть вот так, получше будет ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. тогда и с параметром и без - прокатит... (круглый) ЗЫ Замечания правильно сказали - у Вас на стэке порождается, посему и деструктор отрабатывает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:13
|
|||
|---|---|---|---|
|
|||
Перегруженный конструктор |
|||
|
#18+
Ну, не знаю... У меня все прошло без проблем при пошаговой отладке (MS VC 6.0).... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:13
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
А почему порождается-то? Не помню такого особого поведения конструкторов. Может подскажете, где про это написано.. Мне почему-то кажется, что раньше в порядке вещей было вызывать один конструктор из другого по логике, которую преследовал я. Может быть ошибаюсь - очень давно на С++ не кодил. ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:20
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:27
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Пробовал уже - не прокатит. Error C2273 В Borland Dev Studio 2006 такое же поведение. Раньше много на С++ писал, но все же не помню я такого... ───────── ∙ Иногда решительный шаг вперед - результат хорошего пинка сзади ∙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 15:44
|
|||
|---|---|---|---|
|
|||
Перегруженный конструктор |
|||
|
#18+
В Borland Dev Studio 2006 такое же поведение. Раньше много на С++ писал, но все же не помню я такого... насколько я могу судить, такое поведение соответствует текущему стандарту языка: вызов конструктора происходит неявно при создании объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 16:12
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Код: plaintext 1. 2. 3. 4. А вот так точно работать будет, хотя выглядит как-то извращенно. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 16:35
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Sandro_K А вот так точно работать будет, хотя выглядит как-то извращенно. Код: plaintext 1. 2. 3. 4. Я бы не советовал рисковать с подобными конструкциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 17:47
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Akh Sandro_K А вот так точно работать будет, хотя выглядит как-то извращенно. Код: plaintext 1. 2. 3. 4. Я бы не советовал рисковать с подобными конструкциями. Согласен, подобные конструкции - это плохой стиль. Но то, что тут написано, вполне корректно, и я не могу придумать другого способа вызвать один конструктор из другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2006, 17:58
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Sandro_KСогласен, подобные конструкции - это плохой стиль. Но то, что тут написано, вполне корректно, и я не могу придумать другого способа вызвать один конструктор из другого. Угу. Не думаю, что вызов констуктора из конструктора может когда-либо потребоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 17:50
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Sandro_K ,то, что вы хотите сделать, сделать невозможно. Нужен метод init() вызов конструктора == создание нового объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 20:00
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
Sandro_K Akh Sandro_K А вот так точно работать будет, хотя выглядит как-то извращенно. Код: plaintext 1. 2. 3. 4. Я бы не советовал рисковать с подобными конструкциями. Согласен, подобные конструкции - это плохой стиль. Но то, что тут написано, вполне корректно, и я не могу придумать другого способа вызвать один конструктор из другого. Почему плохой стиль ? Что некорректного ? Вопросы риторические, отвечать не надо. PS: Долго ржал над исходным текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 20:03
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
GryzSandro_K ,то, что вы хотите сделать, сделать невозможно. Нужен метод init() вызов конструктора == создание нового объекта Это неправда. Конструктор никогда не создает нового объекта. Конструктор только инициализирует объект. Сделать такое возможно и абсолютно корректно, причем переносимо, ибо стандарт. Через placement new. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 20:24
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
А зачем делат сложным то, что должно быть простым? Вас же люди читать будутю Правильно сделать init - потому что понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.10.2006, 23:05
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
MasterZiv GryzSandro_K ,то, что вы хотите сделать, сделать невозможно. Нужен метод init() вызов конструктора == создание нового объекта Это неправда. Конструктор никогда не создает нового объекта. Конструктор только инициализирует объект. Сделать такое возможно и абсолютно корректно, причем переносимо, ибо стандарт. Через placement new. Ok. :) Если нету placement new, то при вызове конструктора компилятор генерирует код, выделяющий память для нового объекта. Часто Вам приходится использовать placement new, чтобы "ситуация вынуждала"? Я просто пока не сталкивался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.10.2006, 11:48
|
|||
|---|---|---|---|
Перегруженный конструктор |
|||
|
#18+
blindedА зачем делат сложным то, что должно быть простым? Вас же люди читать будутю Правильно сделать init - потому что понятнее. Я просто привел пример, как можно вызвать один коструктор из другого, он совершенно правильный, и писать так можно, но не нужно. Я никому не советовал и не советую так писать. Полностью согласен что правильнее сделать init. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2030320]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
409ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 745ms |

| 0 / 0 |
