|
|
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
вот еще что я придумал :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вопрос. Можно ли сделать так, чтобы вот это присваивание pa=&a; перехватило объект, и объект не уничтожился при выходе из блока? Я понимаю, он создается в стеке. Но я слышал, что можно как-то переопределить оператор new. Но оператор new сдесь не используется. Понятно ли объяснил? Можно ли? или глупость сморозил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:14 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
alex_k Код: plaintext 1. 2. а что мешает сделать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:23 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
да ничего не мешает. вопрос был не в том, как мне отказаться от моей идеи, а в том, безумна ли моя идея, и если нет, то как ее реализовать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:27 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
alex_kвопрос был не в том, как мне отказаться от моей идеи, а в том, безумна ли моя идея, и если нет, то как ее реализовать :) имхо, она бессмысленна. какой смысл заставлять компилятор использовать new неявно, если это можно и проще сделать явно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:33 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
ну например класс A создает автоматически одного из своих мемберов класс B. другой класс C, посторонний, хочет этого мембера похитить. Ну, в смысле, использовать его для своих целей даже тогда, когда класс А уже будет уничтожен. Скопировать - не всегда возможно. неизвестные private области, а сам класс В копировать себя не хочет, допустим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:38 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
alex_k...другой класс C, посторонний, хочет этого мембера похитить.... единственность экземплярности инстанца класса, на мой взгляд интересно рассмотренна в книге Джэфа Элджера..."C++" удачи Вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 19:44 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
alex_kну например класс A создает автоматически одного из своих мемберов класс B. другой класс C, посторонний, хочет этого мембера похитить. Ну, в смысле, использовать его для своих целей даже тогда, когда класс А уже будет уничтожен. Скопировать - не всегда возможно. неизвестные private области, а сам класс В копировать себя не хочет, допустим. Ну если задача стоит именно так, то я бы попробовал создать свой экземпляр B внутри C, а потом подсунуть этот объект в A. Конечно кривое решение, но увы :) А в реальности, если A создает внутренний объект B и не имеет никаких средств (или желания) отдать этот внутренний объект наружу... Ну тогда значит оно и не нужно :) Тогда пусть класс C создает свой собственный B и пытается скопировать из A.B в С.B все важные параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 20:04 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
Все понял. Нельзя так нельзя :) А вот было бы прикольно, разобрать класс на свойства при уничтожении :) Типа как стол разбирается на ножки и столешницу :) Становится 5 новых объектов, но стол уничтожается :) Но это уже к делу не относится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 20:10 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
а вот в догонку сабж :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. То есть, модифицировать объект родитель в объект потомок :) Можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 20:17 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
Достаточно безумна идея. new и delete ходят парой. То, что вы написали похоже на: A a, *pa, &ra; *pa = &a; ... delete pa; или ra = a; ... delete &ra; Дело в том, что локальные переменные отводятся на стеке и автоматически уничтожаются при потере видимости ... {A a; ... } // Здесь A уже не видно, мало того, он разрушен и деструктор отработал ... Очищать память нужно для тех объектов, память для которых выделена явно - malloc - free или new - delete. Эта память отводится на куче и может быть ( и должна (ну очень желательно) быть освобождениа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 20:23 |
|
||
|
хитрое создание объектов - 2
|
|||
|---|---|---|---|
|
#18+
alex_k 1. Ты один и тот же объект удаляешь 2 раза, так что пример лишен смысла 2. У объектов созданных не с помощью new и delete есть строго определенная область жизни и видимости - это by design 3. Если тебе нужна возможность одновременного владения объекта несколькими другими объектами - то это задача для умных указателей с подсчетом ссылок (тут уже много раз обсужадись, например, тут) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2006, 22:59 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33503419&tid=2032070]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 452ms |

| 0 / 0 |
