|
|
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
Здравствуйте друзья, Вопрос вазник такой. Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B. Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 16:14 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
ParadoxxЗдравствуйте друзья, Вопрос вазник такой. Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B. Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor? Вообще то ето assignment operator. Copy constructor: Код: plaintext 1. 2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 18:17 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee ParadoxxЗдравствуйте друзья, Вопрос вазник такой. Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B. Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor? Вообще то ето assignment operator. Copy constructor: Код: plaintext 1. 2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта. когда вы пошите B objB1 = objB; тo вызывается Copy constructor of class B, assignment это когда оба обьекта уже init.. Ex: objB1 = objB; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 18:45 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
Paradoxx пишет: > Но почемы когда ( B objB1 = objB; ) вызызается copy constructor класса B то > copy constructor класса A не вызызается, а в место этого вызызается > default constructor? Не, вызывается дефолтная реализация конструктора копирования класса A. Она ДОЛЖНА ВЫЗЫВАТЬСЯ в любом случае. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 19:25 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
поведение by design.. хотите иного - указывайте конструктор явно: Код: 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. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 19:52 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
Paradoxx A. Fig Lee ParadoxxЗдравствуйте друзья, Вопрос вазник такой. Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B. Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor? Вообще то ето assignment operator. Copy constructor: Код: plaintext 1. 2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта. когда вы пошите B objB1 = objB; тo вызывается Copy constructor of class B, assignment это когда оба обьекта уже init.. Ex: objB1 = objB; ну и что, что вызывается. Ето реализация такая. Ну или ткните мне пальцем в стандард где сказано, что ето копи-констрактор. Ето ассайнмент оператор, просто нет смысла конструировать, а потом присваивать значение - через копи-констрактор короче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2007, 23:06 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
A. Fig Lee Paradoxx A. Fig Lee ParadoxxЗдравствуйте друзья, Вопрос вазник такой. Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B. Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor? Вообще то ето assignment operator. Copy constructor: Код: plaintext 1. 2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта. когда вы пошите B objB1 = objB; тo вызывается Copy constructor of class B, assignment это когда оба обьекта уже init.. Ex: objB1 = objB; ну и что, что вызывается. Ето реализация такая. Ну или ткните мне пальцем в стандард где сказано, что ето копи-констрактор. Ето ассайнмент оператор, просто нет смысла конструировать, а потом присваивать значение - через копи-констрактор короче. Мне кажется вы запутались или я вас не понял, но это не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 08:43 |
|
||
|
copy constructor of base class
|
|||
|---|---|---|---|
|
#18+
Голенков Владимирповедение by design.. хотите иного - указывайте конструктор явно: Код: 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. 28. 29. То есть как я понял если не вызывать copy constructor base классa явно, то будет вызываться default constructor. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 08:46 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34342079&tid=2029412]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 302ms |
| total: | 575ms |

| 0 / 0 |
