С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

Два разных operator[] - C++

26.01.2012, 12:14. Просмотров 290. Ответов 1
Метки нет (Все метки)

Зачем нужны в классе два перегруженых оператора operator[] и почему первый без const? Ето пример из книги Прата
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Student
{
    typedef std::valarray<double> ArrayDb;
    std::string name;
    ArrayDb scores;
public:
    Student() : name("Null Student"), scores() {}
    Student(const std::string &s) : name(s), scores() {}
    explicit Student(int n) : name("Nully"), scores(n) {}
    Student(const std::string &s, int n) : name(s), scores(n) {}
    Student(const std::string &s, const ArrayDb &a) : name(s), scores(a) {}
    Student(const char *str, const double *pd, int n) : name(str), scores(pd, n) {}
    ~Student() {}
    double & operator[](int i) {return scores[i]; }
    double operator[](int i) const {return scores[i]; }
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2012, 12:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два разных operator[] (C++):

Class & operator's |Error: undefined reference to operator - C++
Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to 'operator..(Fraction const&amp;, Fraction...

Вызов operator[] через operator[] const - C++
Перелистывал Майерса, наткнулся на код, подскажите пожалуйста почему он советует закомментированный вариант кода, не проще сделать как...

operator char() или operator int() - C++
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он описывает класс String в нем есть ...

Два разных элемента - C++
Дан целочисленный двумерный массив А размера n*m. Известно, что среди его элементов два и только два равны между собой. Напечатать их...

Реализация operator + через operator += - C++
внутри следующей темы возник вопрос, ответ на который так и не был получен: ...

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число" - C++
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс, перегрузил операторы сложения и умножения, в конструкторе...

1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
26.01.2012, 12:23 #2
yuron_477, константная и не константная версии. Чтобы можно было применять оператор индексации для константных объектов только для чтения (ведь нелогично запрещать читать значение по индексу из объекта, который не позволяет себя изменять).

Добавлено через 1 минуту

Не по теме:

А ведь в книге это наверняка ранее описывалось (или описывается в пределах пары следующих страниц).

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2012, 12:23
Привет! Вот еще темы с ответами:

Два разных массива записать последовательно в третий - C++
Пожалуйста помогите! Ввод-два массива разной длинны.Записать в третий-сначала идут элементы первого затем второго массива. Зарание...

Разнести данные и методы в два разных класса - C++
Товарищи скорректируйте в какую сторону двигаться. Есть задача создать библиотеку из двух классов. Один содержит поля с характеристиками...

Как записать два разных класса в массив? - C++
допустим есть vector&lt;class_a&gt; cont_a; vector&lt;class_b&gt; cont_b; // тут мы их заполнили допустим по 800 элементов в каждом векторе.и...

Как вывести два массива разных сортировок? - C++
Необходимо сделать одну программу , где нужно вывести сначала неотсортированный массив, затем один массив отсортированный вставками, и один...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.