![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Ozerich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 2.8.2009 Где: Минск, Беларусь Репутация: нет Всего: 5 |
Читаю Страуструпа. Там пример реализации класса String.
Не могу понять почему работает это. Почему когда я пишу String s;s[0] = 'a' вызывается Cref operator[](int ind) и зачем тут вообще отдельный класс Cref почему он работает так же как и char&? --------------------
C++(STL) / DHTML(CSS) / Javascript / PHP Developer |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
потому что ты его вызываешь..странно да? почему если написать A a; a.foo() вызывается функция foo()?
а разве он не объясняет? |
||||
|
|||||
Ozerich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 2.8.2009 Где: Минск, Беларусь Репутация: нет Всего: 5 |
То что класс работает как сhar это понятно - Cref::operator char()const есть. А вот почему как char&? То есть почему компилятор видит что это l-value? Это сообщение отредактировал(а) Ozerich - 12.8.2010, 12:32 --------------------
C++(STL) / DHTML(CSS) / Javascript / PHP Developer |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Ozerich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 2.8.2009 Где: Минск, Беларусь Репутация: нет Всего: 5 |
А почему если написать Cref operator[](int ind) ошибки не будет, а если char operator[](int ind) ошибка будет? Cref это же не ссылка, или классы по ссылке передаются?
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP Developer |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
Ozerich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 2.8.2009 Где: Минск, Беларусь Репутация: нет Всего: 5 |
Вроде немного понял. Спасибо!
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP Developer |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
чтоб было понятнее
на последний вариант можно взглянуть немного иначе
Это сообщение отредактировал(а) azesmcar - 12.8.2010, 13:12 |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |