Перегрузка оператора с возвратом ссылки в классе C ++ - PullRequest
0 голосов
/ 07 сентября 2018

В чем разница между этими двумя функциями?

double &operator[](size_t i) { return features_[i]; }
double operator[](size_t i) const { return features_[i]; }

1, первый позволяет изменить features_[i], а второй нет?

2, какой оператор будет выбран, когда я напишу Mytype[i] = 0 и double x = Mytype[i]?

1 Ответ

0 голосов
/ 07 сентября 2018

1) Да. Обратите внимание, что второй (const) возвращает копию (возврат по значению), которую можно изменить, но она не изменит оригинал в Mytype.

2) Это зависит исключительно от константности Mytype. Однако double x = Mytype[i] приведет к копии в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...