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

Очистка памяти при завершении работы функции, как правильно возвращать значения? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки в С++ http://www.cyberforum.ru/cpp-beginners/thread1755229.html
Помогите пожалуйста решить эту задачу: дан текст. Найти все слова, содержащие букву а. Если можно написать простую программу , что-то похожее на эту, которую я написал для подсчета слов. #include "stdafx.h" #include <iostream> #include <cstring> using namespace std; void main() { char s; cout<<"Tekst: "; gets(s);
C++ Построение Эллипса Построить Эллипс в среде программирования C++ с эксцентриситетом 3.14 и что бы фокус эллипса совпадал с началом координат. http://www.cyberforum.ru/cpp-beginners/thread1755224.html
Отличия QString от String C++
что такое QString и чем отличается от String?
Обьясните рекурсию на пальцах C++
Привет всем! Классическая задача на рекурсию с факториалом. #include <conio.h> long int factorial(long int n) { if (n == 0 || n == 1) return 1; return n * factorial(n - 1); } Допустим n равно 7.Понятно что функция будет рекурсивно себя вызывать уменьшая за каждый вызов n на 1.Доходим до вызова с числом n равным 1. Выполняется условие на равенство 1 и функция возвращает 1 в...
C++ Непонятка с постфиксами в VS 2013 http://www.cyberforum.ru/cpp-beginners/thread1755195.html
#include <iostream> using namespace std; int main() { int a = 10; a = a++ + a++; cout << a << endl; system("pause"); return 0;
C++ Что означают константы 0x01, 0x02, 0x03, 0x04 и т.д. unsigned char key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; что значат 0x01, 0x02, 0x03, 0x04.... подробнее

Показать сообщение отдельно
Fangod
8 / 8 / 0
Регистрация: 07.10.2011
Сообщений: 154
05.06.2016, 16:53     Очистка памяти при завершении работы функции, как правильно возвращать значения?
Я вывел для себя 2 способа возвращать значения работы функции

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
string Add(string a1, string a2) {
    string returnStr;
    returnStr += a1 + "\n";
    returnStr += a2 + "\n";
    return returnStr;
}
 
 
void Add2(string a1, string a2, string& returnStr) {
    returnStr += a1 + "\n";
    returnStr += a2 + "\n";
}
 
 
int main() {
    setlocale(LC_ALL, "Rus");
 
 
    cerr << Add("Чык", "Чырык");
 
    cerr << "-----------------\n";
 
    string testStr;
    Add2("Чык", "Чырык", testStr);
    cerr << testStr;
 
 
    system("pause");
    return 0;
}
Почему-то все предпочитают второй, хотя первый гораздо понятней, в книгах говорилась о том, что значение возвращаемое функцией из первого способа может быть уже "мертво"

Как тогда правильно возвращать значения? Разве результат функции передает ссылку на переменную? А не сразу значение? Зачем тогда вообще в языке есть возможность возвращать значение через функцию, если в любой момент все может рухнуть?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru