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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Указатели или ссылки (в качестве аргументов функции) ? - C++

23.05.2013, 10:23. Просмотров 1946. Ответов 55
Метки нет (Все метки)

В каких случая надо использовать ссылки и в каких указатели в качестве аргументов функции?
В общем поняла, что и те и другие полезны для ссылания на крупные обьекты типа классов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 10:23     Указатели или ссылки (в качестве аргументов функции) ?
Посмотрите здесь:
Нюансы синтаксиса и семантики: ссылки, указатели и массивы в качестве аргументов функций C++
Указатели на массивы в качестве аргументов C++
C++ Константные указатели в качестве аргументов функций
C++ С++ Тема «Указатели и динамические массивы. Использование указателей в качестве аргументов функций»
Идентификаторы списка в качестве аргументов функции C++
C++ Использование массивов в качестве аргументов функции
Ostream и ofstream в качестве аргументов полиморфной функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.05.2013, 10:49     Указатели или ссылки (в качестве аргументов функции) ? #31
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
Как так? Под именем оператора сложения что ли? Так писать нельзя, это источник глюков. Или меняет объект, от которого вызвал? Ну так на то это и присваивание. Сложение то здесь при чём?
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 10:56  [ТС]     Указатели или ссылки (в качестве аргументов функции) ? #32
Цитата Сообщение от taras atavin Посмотреть сообщение
Как так? Под именем оператора сложения что ли? Так писать нельзя, это источник глюков. Или меняет объект, от которого вызвал? Ну так на то это и присваивание. Сложение то здесь при чём?
нет, там было только присваивание = без +=
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.05.2013, 12:05     Указатели или ссылки (в качестве аргументов функции) ? #33
Цитата Сообщение от programina Посмотреть сообщение
нет, там было только присваивание = без +=
Ну так присваивание, как простое, так и составное, как раз и должно менять сам объект, в отличие от сложения. Охотника же явно глюк попутал.
programina
24.05.2013, 12:14  [ТС]
  #34

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
Охотника же явно глюк попутал.
он же охотник, его леший попутал
А вообще не ошибается тот, кто ничего не делает

Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 13:32     Указатели или ссылки (в качестве аргументов функции) ? #35
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
Доставайте объекты из пула, чтобы избежать их создания, но вопрос стоит ли оно этого в данном случае.
Цитата Сообщение от programina Посмотреть сообщение
Кстати в том примере, который я видела, оператор присваивания реализован именно так.
operator+ не должен изменять объект, а должен работать именно так, как ожидает клиент.
C++
1
2
int a=3,b=5;
a+b;
У Вас же a в данном случае не меняется.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.05.2013, 13:35     Указатели или ссылки (в качестве аргументов функции) ? #36
Цитата Сообщение от Croessmah Посмотреть сообщение
operator+ не должен изменять объект, а должен работать именно так, как ожидает клиент.
C++
1
2
int a=3,b=5;
a+b;
У Вас же a в данном случае не меняется.
Как он должен работать и как всё рано напишет какое нибудь чудило - далеко не одно и тоже, иначе глюков бы не было.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.05.2013, 14:21     Указатели или ссылки (в качестве аргументов функции) ? #37
Цитата Сообщение от ForEveR Посмотреть сообщение
UB ж.
Не понял твоего сообщения. Поясни.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 14:25  [ТС]     Указатели или ссылки (в качестве аргументов функции) ? #38
Цитата Сообщение от Vourhey Посмотреть сообщение
Не понял твоего сообщения. Поясни.
undefined behavior
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.05.2013, 14:38     Указатели или ссылки (в качестве аргументов функции) ? #39
В каком компилере?
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.05.2013, 14:46  [ТС]     Указатели или ссылки (в качестве аргументов функции) ? #40
Цитата Сообщение от Vourhey Посмотреть сообщение
В каком компилере?
в любом стандартном компилере
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 14:56     Указатели или ссылки (в качестве аргументов функции) ? #41
Цитата Сообщение от Vourhey Посмотреть сообщение
Поясни
C++
1
2
    int *a=NULL;
    int &b = *a;
Имеется ввиду разыменование NULL
А потом еще и значение по нему прописать
gray_fox
What a waste!
1449 / 1178 / 62
Регистрация: 21.04.2012
Сообщений: 2,466
Завершенные тесты: 3
24.05.2013, 15:25     Указатели или ссылки (в качестве аргументов функции) ? #42
Цитата Сообщение от taras atavin Посмотреть сообщение
Как он должен работать и как всё рано напишет какое нибудь чудило - далеко не одно и тоже, иначе глюков бы не было.
Какое-нибудь чудило может просто разыменовать nullptr, например, или сделать ещё миллион других вещей, которые приводят к неочевидному или непредсказуемому поведению.
Dmitriy_M
1341 / 1222 / 112
Регистрация: 20.03.2009
Сообщений: 4,393
Записей в блоге: 11
24.05.2013, 15:42     Указатели или ссылки (в качестве аргументов функции) ? #43
Цитата Сообщение от programina Посмотреть сообщение
В каких случая надо использовать ссылки и в каких указатели в качестве аргументов функции?
Марш читать "Брайан Керниган, Деннис Ритчи: Язык программирования C", а потом
"Бьерн Страуструп. Язык программирования С++", и найди несколько отличий.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
24.05.2013, 17:05     Указатели или ссылки (в качестве аргументов функции) ? #44
Цитата Сообщение от programina Посмотреть сообщение
в любом стандартном компилере
Проверь-ка.
Цитата Сообщение от Croessmah Посмотреть сообщение
Имеется ввиду разыменование NULL
Для взятия ссылки компилятор не станет разыменовывать указатель. При операции со ссылкой он просто возьмет значение указателя - адрес и сохранит его в ссылке. Разыменовывание его заинтересует, если бы слева была не ссылка. Теоретически, может, и UB, на практике не встречал. Собственно, поэтому и поинтересовался, какой компилер так сделает. Чисто с практической точки зрения интересно взглянуть на скомпилированный код.
Цитата Сообщение от Croessmah Посмотреть сообщение
А потом еще и значение по нему прописать
Значение не должно интересовать компилятор, когда слева стоит ссылка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 17:14     Указатели или ссылки (в качестве аргументов функции) ?
Еще ссылки по теме:
C++ Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов
C++ функции,указатели и ссылки.
C++ Дан файл, переписать его в обратном направлении, передавая имена файлов в качестве аргументов функции main
Ссылки или указатели (Написать функцию , которая вычисляет гипотенузу, площадь и периметр прямоугольного треугольника) C++
Правильно ли я понимаю ссылки и указатели. Работу с ними. Я сам прокомментировал код. Скажите правильно или нет. C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 17:14     Указатели или ссылки (в качестве аргументов функции) ? #45
Цитата Сообщение от Vourhey Посмотреть сообщение
Значение не должно интересовать компилятор, когда слева стоит ссылка.
Компилятор не должно, а вот во время выполнения...
Yandex
Объявления
24.05.2013, 17:14     Указатели или ссылки (в качестве аргументов функции) ?
Ответ Создать тему
Опции темы

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