27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
|
|
1 | |
Ссылки vs Указатели10.07.2012, 18:54. Показов 6827. Ответов 81
Метки нет (Все метки)
Почему ссылки считаются более хорошим средством, чем указатели?
Ведь если человек будет использовать сторонние классы, он может не заметить, скажем int &val и не будет знать, что передается ссылка, а вовсе не копия. Это может повлечь за собой кучу неприятностей. Даже сам разработчик может спустя время забыть о злополучном знаке &. Так почему ссылки лучше?
0
|
10.07.2012, 18:54 | |
Ответы с готовыми решениями:
81
Указатели и ссылки c++ Указатели и ссылки Ссылки, указатели Ссылки и указатели |
12.07.2012, 21:30 | 41 |
Любое преобразование типов над указателями я считаю буратинством. При таком раскладе и на const в общем случае нельзя положиться
Когда стоит "func (&x)", то при определённых соглашениях даже смотреть никуда не надо, ибо надо исходить из того, что переменная будет модифицироваться
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
12.07.2012, 23:15 | 43 |
ну не знаю, не видя полной сигнатуры функции с именами параметров все равно бывает сложно что-то сказать о функции
Добавлено через 19 секунд а еще continue
1
|
Комп_Оратор)
|
||||||
13.07.2012, 15:37 | 44 | |||||
А если в функции нет обращения, а только выбор и возврат:
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
13.07.2012, 16:34 | 45 | |||||
Пример с массивом не корректен, т.к. он всегда как указатель передаётся. А вот если использовать объекты:
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
13.07.2012, 17:05 | 46 |
Вызывая функцию, ты должен точно знать её назначение, а из него в любом случае будешь знать не только об изменении параметра, но и о характере этого изменения. А иначе опасна и передача по значению и даже вызов функции без параметров.
1
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
13.07.2012, 19:22 | 48 |
0
|
13.07.2012, 22:37 | 49 | |||||
Ну это не так. Под ссылку даже память может не выделяться, она также не может иметь своего адреса, к ней не применим const, нельзя применить ссылку на ссылку и др.комбинации.Единственное что можно зделать - инициализировать.
Думаю что достаточно различий что бы не говорить что ссылка это тот же указатель. Добавлено через 10 минут
0
|
Комп_Оратор)
|
|||||||||||
13.07.2012, 23:14 | 50 | ||||||||||
Avazart, тут и спора нет. Ссылка не тот же указатель, но ведет себя как указатель с урезанными правами. Она const по определению, поэтому и не стоит ее объявлять как константу, а ссылаться на константу вполне может. Но везде где используется ссылка может быть использован указатель, но с дополнительными операциями * разименования. На ооборот - нет. Но смысл ссылки, как она задумана, в доступе к значению. Удобство в том, что если требуется адрес она автоматически предоставляет адрес без *. Но ведь указатель же может быть передан и для работы с указателем как таковым?
Deviaphan, массивы передаются по ссылке. Ну и что? А объекты которые созданы через указатели:
A* foo(A* a, A* b, int c);//декл //---------------------------------- //вызов:
Мой опыт и знания не представляют ничего серьёзного и вопросы я задаю, для более глубокого понимания.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
14.07.2012, 06:29 | 52 |
Массивы ВООБЩЕ невозможно передать по значению. Синтаксис передачи по ссылке эквивалентен передаче по значению, поэтому такой пример не корректен был.
Добавлено через 42 секунды В смысле???
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
14.07.2012, 06:36 | 54 | |||||
Ке?
Тот, пример которого я переделал много постов тому назад.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
14.07.2012, 07:28 | 56 |
А где влияние на переменную? В обоих случаях это const ссылки.
В отличие от константного указателя и указателя на константу, константная ссылка и ссылка на константу это одно и то же.
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
14.07.2012, 11:18 | 58 |
Не так же. Пример с указателем приведён был выше. В частных случаях итератор и указатель равнозначны. Константная ссылка и ссылка на константу это одно и то же.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
14.07.2012, 11:27 | 60 |
Avazart, Ничего нелепого. В большинстве случаев это разные классы, которые по разному используются (в частности методы ->, * могут быть реализованы по разному и в const_iterator должны быть константами и возвращающими константу), как бы вы тогда назвали const_iterator, если такое название по вашему нелепо?
0
|
14.07.2012, 11:27 | |
14.07.2012, 11:27 | |
Помогаю со студенческими работами здесь
60
Указатели и ссылки Указатели и Ссылки Указатели и ссылки Ссылки и указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |