|
|
|
Где глюк?
|
|||
|---|---|---|---|
|
#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. b1 begin constructor class A constructor class B b1 end b2 begin b2 end Не пойму почему объект b2 не создается, где тут ошибка? компилятор gcc version 4.0.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:05 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
А зачем так писать? B<A> b2(A()); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:12 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
maytonА зачем так писать? B<A> b2(A()); Так что в этой строке не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:15 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Похоже что компилятор воспринимает строку B<A> b2(A()); как объявление прототипа функции, которая принимает тип A (*)() , т. е. указатель на функцию, возвращающую А, и возвращает тип B<A> Но разве такое поведение компилятора правильное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:27 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Sandro_KНо разве такое поведение компилятора правильное? Именно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:33 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
ZrenBy Sandro_KНо разве такое поведение компилятора правильное? Именно Получается что в конструктор невозможно передать объект не создавая временного объекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:40 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Честно говоря... даже не знаю. Могу предположить, что конструктор срабатывает раньше чем вход в процедуру main. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:51 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Sandro_KПолучается что в конструктор невозможно передать объект не создавая временного объекта?жжош ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:57 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Получается что в конструктор невозможно передать объект не создавая временного объекта? так работает: B<A> b2 = A(); или так: B<A> b2( static_cast<A>( A() ) ); возможно, еще как-нить.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 14:58 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
временный объект, разумеется, создается по-любому вот только skope различный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:00 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
а ты добавь ещё ~A(){std::cout << "destructor class A\n"; } и смотри, какой творится пир духа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:09 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
maXmo Sandro_KПолучается что в конструктор невозможно передать объект не создавая временного объекта?жжош И в чем я тут отжог? Че-то до меня не доходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:10 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Sandro_KВот небольшой пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. b1 begin constructor class A constructor class B b1 end b2 begin b2 end Не пойму почему объект b2 не создается, где тут ошибка? компилятор gcc version 4.0.2 У меня тоже есть вопрос: Почему компилятор пропустил такую инициализацию b2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:20 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
onstat- Sandro_KВот небольшой пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. b1 begin constructor class A constructor class B b1 end b2 begin b2 end Не пойму почему объект b2 не создается, где тут ошибка? компилятор gcc version 4.0.2 У меня тоже есть вопрос: Почему компилятор пропустил такую инициализацию b2? Да при дальнейшем использовании b2 программа действительно не компилируется и выдает ошибку, именно так я понял что компилятор считает b2 прототипом функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:25 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Sandro_KИ в чем я тут отжог? Че-то до меня не доходитне понимаешь, почему несозданный объект нельзя никуда передавать? И ваще, да, бросай писать прогу: зачем, ведь её можно уже юзать, не написав ни строчки кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:32 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Голенков Владимирвременный объект, разумеется, создается по-любому вот только skope различный Ну например если писать B<A> b2 = A(); или B<A> b2( static_cast<A>( A() ) ); то временных объектов будет меньше чем если писать A a; B<A> b1(a); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:33 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
maXmo Sandro_KИ в чем я тут отжог? Че-то до меня не доходитне понимаешь, почему несозданный объект нельзя никуда передавать? И ваще, да, бросай писать прогу: зачем, ведь её можно уже юзать, не написав ни строчки кода. Судя по этому посту в данном вопросе ты понимаешь меньше меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:37 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
весёлый ты человек! Временных объектов меньше будет... а если так? B<A*> b2(new A()); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:39 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
maXmoвесёлый ты человек! Временных объектов меньше будет... а если так? B<A*> b2(new A()); Не понимаю при чем тут данный пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:44 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Sandro_K Голенков Владимирвременный объект, разумеется, создается по-любому вот только skope различный Ну например если писать B<A> b2 = A(); или B<A> b2( static_cast<A>( A() ) ); то временных объектов будет меньше чем если писать A a; B<A> b1(a); Если правильно создать конструкторы копирования и присваивания то временных обьектов будет меньше, а еще можно закрыть сразу кучу проблем которые потом могут вылезти с деструкторами и памятью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:47 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
то временных объектов будет меньше imho, зависит от компилятора VS2005: b1 begin constructor class A constructor copy A constructor copy A constructor class B b1 end b2 begin constructor class A constructor copy A constructor copy A constructor class B b2 end g++ (GCC) 3.2.3 (mingw special 20030504-1): b1 begin constructor class A constructor copy A constructor copy A constructor class B b1 end b2 begin constructor class A constructor copy A constructor class B b2 end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:47 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
maXmo Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:49 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Голенков Владимир то временных объектов будет меньше imho, зависит от компилятора VS2005: b1 begin constructor class A constructor copy A constructor copy A constructor class B b1 end b2 begin constructor class A constructor copy A constructor copy A constructor class B b2 end g++ (GCC) 3.2.3 (mingw special 20030504-1): b1 begin constructor class A constructor copy A constructor copy A constructor class B b1 end b2 begin constructor class A constructor copy A constructor class B b2 end А у меня вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. constructor class A copy constructor class A copy constructor class A constructor class B b1 end b2 begin constructor class A copy constructor class A constructor class B b2 end b3 begin constructor class A copy constructor class A constructor class B b3 end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:53 |
|
||
|
Где глюк?
|
|||
|---|---|---|---|
|
#18+
Походу gcc оптимизирует вызовы конструкторов копирования круче чем MS VC мож в vc надо оптимизацию включить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34127698&tid=2030025]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 497ms |

| 0 / 0 |
