58 / 48 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
||||||
1 | ||||||
Константная функция с константной ссылкой05.03.2019, 08:23. Показов 2562. Ответов 6
Есть следующая строка
И второй вопрос: что означает const std::vector<Point> перед именем функции, что функция вернёт константный вектор? Но если функция вернёт константный вектор, то получается, что при неоднократном вызове функции неоднократно инициализируется константный вектор, который возвращается функцией, а константы инициализируются только один раз, как быть?
0
|
05.03.2019, 08:23 | |
Ответы с готовыми решениями:
6
Как сделать доступным обращение к методу параметра, объявленного константной ссылкой? Перегруженная константная функция Константная ссылка Возможна ли константная наследуемость? |
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
05.03.2019, 08:31 | 2 |
Сообщение было отмечено Timurs как решение
Решение
Да, если я правильно понял ваш вопрос, вы можете передать через константную ссылку изначально неконстантный объект. Это будет означать, что через эту ссылку объект нельзя будет поменять.
Эти отверждения не противоречат. Объект каждый раз разный и он инициализируется один раз. Собственно, любой объект инициализируется один раз, от константности тут ничего не зависит. Разобраться, наверное. Ведь тут нет никакой проблемы...
1
|
58 / 48 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
05.03.2019, 09:32 [ТС] | 3 |
DrOffset, спасибо, разобрался! В курсе, что при вызовах функции возвращаемые значения разные, но с этими константами что-то запутался. Собственно этот пример увидел здесь https://www.youtube.com/watch?v=LuaNbkRPGRo на 13:40 рефакторят эту строку и убирают const перед функцией. Не очень понятно почему его убрали, да и вообще непонятно зачем этот const тут нужен ведь функция в любом случае вернёт каждый раз разный вектор, тем не менее, судя по примеру, компилятор на const перед именем функции не ругается, а значит в таком случае наверняка какой-то смысл есть (иначе бы его выпилили). Может быть const перед именем функции и означает, что аргументы функции нельзя поменять, а тогда получается масло масляное и его убрали, верно?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
05.03.2019, 10:32 | 4 | |||||
Сообщение было отмечено Timurs как решение
Решение
Будет означать, что временный объект, который возвращает функция, нельзя будет изменить.
Т.е.
2
|
"C with Classes"
|
|
05.03.2019, 10:46 | 5 |
это я долго понимал (почему то), тут еще важно понимать работу конструкторов и операторов присваивания в том числе и определенных пользователем. думаю правильный ответ
0
|
58 / 48 / 14
Регистрация: 23.02.2016
Сообщений: 433
|
|
05.03.2019, 11:31 [ТС] | 6 |
DrOffset, спасибо! Мощный пример, однако, написали
0
|
"C with Classes"
|
||||||
05.03.2019, 15:14 | 7 | |||||
Timurs,
в данном случае нужно понимать что обычно есть две версии:
0
|
05.03.2019, 15:14 | |
05.03.2019, 15:14 | |
Помогаю со студенческими работами здесь
7
Константная переменная и константный указатель Константная ссылка в качестве аргумента конструктору копирования Передача по константной ссылке Алгоритм с константной асимптотикой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |