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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод программы с Паскаль на С++ http://www.cyberforum.ru/cpp-beginners/thread296920.html
Помогите перевести с паскаля, нашел решение данной задачи, но не для С++. Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива. Преобразовать исходную матрицу по правилу: чётные строки разделить на полученное значение, нечётные оставить без изменения. uses crt; const n=10; var a:array of real; ...
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: Matrix(size_t rows, size_t cols) { if (rows * cols == 0)
Исходник: программно выключить ПК. 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) , найти индекс по по значению числа, используя рекурсию. Способ поиска таков: если в массиве 10 элементов и надо найти число 76. Делим массив на пополам и ищем в той части где он может находится. И так делим на половину до его поиска. ... подробнее

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

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

16.05.2011, 16:17. Просмотров 772. Ответов 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, что эдак. Правильно я думаю?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru