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

Синтаксис. Использование & - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструктор и декструктор, явное и неявное объявление http://www.cyberforum.ru/cpp-beginners/thread1091617.html
Конструктор и декструктор, явное и неявное объявление? Подскажите где об этом можно почитать?
C++ Вычисление суммы элементов главной диагонали матрицы 1.составить блок-схему алгоритма решения задачи и написать программу на языке С++ вычисления суммы элементов главной диагонали матрицы МхМ http://www.cyberforum.ru/cpp-beginners/thread1091614.html
C++ Не могу заполнить массив char
{ struct Univer{ char fam; char kaf; char dol; double zar;}; Univer *p1=new Univer; Univer *p2=new Univer; p1->fam="Иванов";
C++ Как правильно указать путь к файлу?
Парни! Такое дело: есть приложение, есть DLL, написанная мною, которая проигрывает определённый звук по "команде" из приложения. В моей DLL есть функция которая читает WAV файл. Вот она: ...
C++ ERROR with float http://www.cyberforum.ru/cpp-beginners/thread1091599.html
Здравствуйте.. задача про нахождение общего сопротивления для параллельного и последовательного соединений(здесь все на кыргызском), но дело не в этом, а в том что тут какая то ошибка с float, я ...
C++ Заполнить двумерный массив следующим образом Нужно заполнить двумерный массив следующим образом. Не могу додуматься, как все сделать... :cry: подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
07.02.2014, 20:28
getNameAmp вернёт ссылку (то есть, указание "где лежит") на строку, которая уже была уничтожена при выходе из функции и уже нигде не лежит. Работа с этой ссылкой приведёт к неопределённому поведению, на практике - к неправильной работе программы и неожиданным и неочевидным ошибкам.
getName вернёт копию строки, которую никак не затронет уничтожение оригинала и которой можно безопасно пользоваться.
Аналогично, первый вариант foo получает копию строки, и всё, что он проделает с этой копией, не отразится на оригинале. Второй вариант получает ссылку на оригинал и имеет возможность этот оригинал изменить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void foo1(std::string a) {a = "bbb";}
 
void foo2(std::string& a) {a = "bbb";}
 
int main(){
    string x("aaa");
    cout << x;  // напечатает aaa
    foo1(x);
    cout << x;  // снова напечатает aaa
    foo2(x);
    cout << x;  // напечатает bbb
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.