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

Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод программы с Паскаль на С++ http://www.cyberforum.ru/cpp-beginners/thread296920.html
Помогите перевести с паскаля, нашел решение данной задачи, но не для С++. Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов. Найти след матрицы, суммируя...
C++ решите 2 задачи Помогите пожалуйста решить номера задач (2 и 3) в 8 варианте! в проге Dev C++ файл приложил в виде фото... http://www.cyberforum.ru/cpp-beginners/thread296916.html
C++ Перегрузка оператора ^
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования матрицы. Есть класс матрицы: template <class T> class Matrix { T** values; size_t rows; size_t cols; public:...
Исходник: программно выключить ПК. C++
Есть такой у кого нибудь?
C++ Составьте программу для вычисления составной функции http://www.cyberforum.ru/cpp-beginners/thread296900.html
Составьте программу для вычисления составной функции: sin(5f(x) + 3m|f(х)|), -1<m<х | 1 cos(3f(x) + 5т|f(х)|), m>х (f(x)+m)2, х=m Самостоятельно выберите необходимое количество...
C++ найти индекс по по значению числа, используя рекурсию. Здравствуйте! Есть инициализированный и отсортированный массив определенного размера. Надо в этом массиве в функции int ReturnNumberArrey (int *arr, int FindNum) , найти индекс по по значению числа,... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459

Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? - C++

16.05.2011, 16:17. Просмотров 810. Ответов 5
Метки (Все метки)

Сабж.
Ну, то есть есть класс, что-то такое:
C++
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
#include <iostream>
using namespace std;
 
class arr
{
  public:
    explicit arr(int number) {
     array= new int [number];
     for (int i= 0; i< number;i++) array[i]= i* i;
    };
    //int operator[] (int i){return array[i];};
    int& operator[] (int i){return array[i];};
 
    ~arr(){delete array;}
 
  private:
    int *array;
};
 
int main () { 
 arr a(6);
 int r= a[2];
 cout<<r <<endl;
 getchar();
 return 0;
}
Есть перегруженный оператор [], он возвращает int, а у меня в книге написано, что надо возвращать ссылку на int

Я так подумал- мы ничё во втором случае не выиграем.
Итак, возвращаем ссылку. Размер тот же, что у int, да плюс ко всему её ещё и разыменовывать надо;
двойная работа. А int вернул и получил готовое значение.

А если компилятор трактует возврат ссылки как СРАЗУ возврат значения, опять ничё не выигрываем, что так возвратится int, что эдак. Правильно я думаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru