| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > оператор присваивания |
| Автор: Lotles 11.10.2010, 21:54 | ||||
| Привет всем ! Каким образом вызывается оператор присваивания, например, здесь:
если в аргументе const char*, а в операторе присваивания const String&. Может быть дело в operator char*(), но в ответе operator char*() вызывается после присваивания: Компилятор выводит : Vizivaetsja operator prisvaivanija Vizivaetsja operator prisvaivanija Vizivaetsja operator prisvaivanija Vizvalsja operator char* ...
|
| Автор: Crafty 11.10.2010, 22:23 | ||||
Сначала неявно создаётся временный объект при помощи конструктора String(const char* s), и потом уже идет присвоение. Добавлено @ 22:25 это уже относиться к
|
| Автор: Lotles 12.10.2010, 00:01 | ||||||||
Сюда, в src передается временный объект Так ? |
| Автор: Crafty 12.10.2010, 00:20 | ||
| Lotles, да так. Добавлено через 1 минуту и 27 секунд Получается что-то наподобие
|
| Автор: Lotles 12.10.2010, 01:31 |
| Спс ! |
| Автор: Crafty 12.10.2010, 01:51 |
| Lotles, я вот эту щас дочитываю http://www.ozon.ru/context/detail/id/2988768/. Там эти вопросы не плохо объясняются. Еще http://forum.vingrad.ru/forum/topic-287943/kw-faq-books-литература-книги.html можете посмотреть про книги. |
| Автор: Lotles 12.10.2010, 01:53 |
| Я читаю C++ без страха, вообще слов нету такое ### каторого свет не видывал Добавлено @ 01:59 Кстате, поставьте + Crafty, кто -нибудь, а то я не могу |
| Автор: Lotles 13.10.2010, 17:23 | ||||
| Я пытаюсь понять что внутри неявно вызываемого конструктора String (const char*){ String new_pt ... ... } Когда обрабат-ся код a= "I" в конструкторе что то наподобе new_pt.ptr=I, потому что здесь
а точнее
находится I, потом am, потом so И главный вопрос: Откуда компиляьор знает, что именно в new_pt.ptr нужно записать "I" |
| Автор: bsa 14.10.2010, 16:31 |
А чего понимать? Посмотри строки 14-18 своего кода, там все написано. Просто ты в качестве параметра указал char*, а стоило бы const char*. Но все равно будет работать, так как оставлена совместимость со старым кодом, в котором const не было. |