![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
![]()
В функции istream &operator>>(istream &input, TString &s) есть присваивание s = temp;
s - это ссылка на TString temp - это обычная строка символов Почему при присваивании не происходит ошибка? Ведь в программе нет такой перегруженной операции присваивания И еще вопрос. Почему в этой строчке s = temp; выполняются 3 действия 1. Вызывается конструктор преобразования 2. Вызывается оператор operator= 3. Вызывается деструктор Код:
Последний раз редактировалось revizor; 20.01.2013 в 14:38. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
![]()
1) создается временный безымянный объект TString при помощи конструктора преобразования
2) выполняется оператор присваивания, определенный в классе 3) уничтожается временный объект |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
![]()
Почему компилируется без ошибок? Ведь в программе нет перегруженного оператора присваивания, что-то вроде этого
Код:
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
![]()
"2) выполняется оператор присваивания, определенный в классе"
Но ведь этот оператор работает только если с левой и с правой стороны от знака = будут TString. А в программе с левой стороны TString а с правой char * Вообщем, я запутался совсем. Сегодня весь день над этим голову ломаю ![]() Последний раз редактировалось revizor; 20.01.2013 в 17:05. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
![]()
У вас есть преобразовывающий конструктор:
Код:
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
![]()
1)компилятор смотрит: оппа присваивание char* TString'у это я не умею, чо делать
2)оппа конструктор преобразования char* в TString - это нам подойдет 3)строит безымянный TString из char* 4)присваивает TString'y безымянныйTString 5)удаляет безымянный TString |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 20.01.2013
Сообщений: 146
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 224
|
![]()
А чтобы компилировалось с ошибками, писать так:
Код:
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операций | manoichi | Общие вопросы C/C++ | 0 | 09.01.2012 19:30 |
С++ Перегрузка операций | sir.andrey | Помощь студентам | 3 | 08.07.2011 15:18 |
Перегрузка операций для созданных шаблонов(C#) | Mixim | Общие вопросы .NET | 4 | 28.09.2010 11:03 |
Перегрузка операций для класса дробей | Fataller | Общие вопросы C/C++ | 4 | 29.05.2010 18:08 |
С++ перегрузка операций для шаблонного класса | TIN | Помощь студентам | 7 | 29.03.2009 15:24 |