Форум программистов, компьютерный форум CyberForum.ru

Перегрузка [] - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
sledge
0 / 0 / 0
Регистрация: 27.07.2009
Сообщений: 13
09.08.2009, 17:19     Перегрузка [] #1
Здравствуйте все, снова.

C++
1
2
char operator[](const unsigned short  i )const ;
char & operator[](const unsigned short  i ) ;
Пишу
C++
1
2
3
MyStrClass str("test")
cout<<str[0];
str[0]='b';
Как компилятор определяет когда и какой оператор[] использовать?
Есть какое-то соглашение?

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2009, 17:19     Перегрузка []
Посмотрите здесь:

C++ Перегрузка new
C++ перегрузка <<, >>, []
Перегрузка << C++
Перегрузка C++
C++ Перегрузка
Перегрузка C++
C++ Перегрузка.
Перегрузка C++
перегрузка в с++ C++
C++ Перегрузка +
Перегрузка () C++
Перегрузка + C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
09.08.2009, 17:52     Перегрузка [] #2
вот правильные прототипы оператора:
C++
1
2
3
4
5
6
char &operator[](const size_t index) {
  return data[index];
}
const char &operator[](const size_t index) const {
  return data[index];
}
Цитата Сообщение от sledge Посмотреть сообщение
Как компилятор определяет когда и какой оператор[] использовать?
Есть какое-то соглашение?
C++ Primer, Fourth Edition
Providing Read and Write Access
One complication in defining the subscript operator is that we want it to do the right thing when used as either the left- or right-hand operand of an assignment. To appear on the left-hand side, it must yield an lvalue, which we can achieve by specifying the return type as a reference. As long as subscript returns a reference, it can be used on either side of an assignment.

It is also a good idea to be able to subscript const and nonconst objects. When applied to a const object, the return should be a const reference so that it is not usable as the target of an assignment.

Best Practises: Ordinarily, a class that defines subscript needs to define two versions: one that is a nonconst member and returns a reference and one that is a const member and returns a const reference.
Yandex
Объявления
09.08.2009, 17:52     Перегрузка []
Ответ Создать тему
Опции темы

Текущее время: 08:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru