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

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

Войти
Регистрация
Восстановить пароль
 
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
#1

return и дестуктор - C++

31.07.2012, 00:14. Просмотров 698. Ответов 13
Метки нет (Все метки)

как передают значение объекта ,созданного в функции через return ?При return вызывается его деструктор и передать значение из функции уже не могу .Что нужно написать / перегрузить ,какие модификаторы для переменных функции и самой функции поставить ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 00:14     return и дестуктор
Посмотрите здесь:

C++ Return
C++ return
Return C++
C++ return (n<0) ? -n:n;
C++ Detect и return -1 ?
return в блоксхеме C++
return *this; C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
phpdreamer
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 8
31.07.2012, 00:17     return и дестуктор #2
может быть стоит объявить объект глобально, а в функции присвоить ему нужное значение?
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 00:18  [ТС]     return и дестуктор #3
неа ,перегружаю + .
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
31.07.2012, 00:20     return и дестуктор #4
Цитата Сообщение от lupus1libertas Посмотреть сообщение
как передают значение объекта ,созданного в функции через return ?При return вызывается его деструктор и передать значение из функции уже не могу .Что нужно написать / перегрузить ,какие модификаторы для переменных функции и самой функции поставить ?
напиши пример, чтоб не ломать голову
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 00:26  [ТС]     return и дестуктор #5
ну если поможет
не шаблон .

C++ (Qt)
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
T& operator + ( T& a , T& b)
{
    T c;
        c = a;
    if(a.ReturnSignum()!=b.ReturnSignum())
    {
        if(a.ReturnSignum())c = a - abs(b);
        else c = b-abs(a);
    }
    else
    {
        if(a.ReturnSignum())
        {
        PlsAming(a,b,c);
        PlsFractional(a,b,c);
        }
        else
        {
        c = -a + -b ;
        c=-c;
        }
    }
    //cout<<c.ToString()<<endl;
    
    return c;
}
Честно ,не разбираюсь во всём этом .Кабы разбирался , не спрашивал .
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2012, 00:27     return и дестуктор #6
возвращаешь ссылку на локальный объект

Цитата Сообщение от lupus1libertas Посмотреть сообщение
C++
1
T& operator + ( T& a , T& b)
C++
1
T operator + (const T& a , const T& b)
ну и соответсвенно все вызываемые методы должны быть константными
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
31.07.2012, 00:28     return и дестуктор #7
нужно возвращать объект, а не ссылку на него. конечно в таком варианте будет разрушатся локальный объект.
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 00:34  [ТС]     return и дестуктор #8
чем поможет const для передаваемых параметров ?Насильно - специально внутри объекты не меняю .Любопытства ради .

Да ,мне нужно как-нибудь объект с ограниченной зоной видимости и временем жизни передать "вверх" .

Добавлено через 1 минуту
вариант с убрать амперсанд с возвращаемого типа не работает .
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2012, 00:36     return и дестуктор #9
Цитата Сообщение от lupus1libertas Посмотреть сообщение
не работает
а конкретнее
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 00:42  [ТС]     return и дестуктор #10
поля уничтожаются .

Добавлено через 3 минуты
может можно как-нибудь модифицировать запись объявления функции ,дабы я не мучался ? =)

На хабре подсмотрел передавать конструктор ,типа return T() ;
но не хочу это делать ,есть другие варианты?
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2012, 00:43     return и дестуктор #11
Цитата Сообщение от lupus1libertas Посмотреть сообщение
поля уничтожаются .
с такой конкретикой вам никто не поможет, экстрасенсов тут нет! выложите хоть какой-то пример кода
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 01:20  [ТС]     return и дестуктор #12
деструктор ---- мои поля .
Что вариант 1 ,что вариант 2 .На хабре подсмотрел передавать конструктор ,но с этим связываться не хочу .

Добавлено через 35 минут
Не актуально ,close() ;
John Prick
771 / 704 / 128
Регистрация: 27.07.2012
Сообщений: 2,015
Завершенные тесты: 3
31.07.2012, 09:53     return и дестуктор #13
Цитата Сообщение от lupus1libertas Посмотреть сообщение
вариант с убрать амперсанд с возвращаемого типа не работает .
Цитата Сообщение от lupus1libertas Посмотреть сообщение
поля уничтожаются .
В классе T у тебя, скорее всего, не прописан конструктор копирования, который вызывается при передаче значения из функции. Напиши его таким, чтобы он копировал значения нужных тебе полей.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 10:16     return и дестуктор
Еще ссылки по теме:

C++ return
return зачем он? C++
с++ while return C++
Return в цикле for C++
Матрицы return C++

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

Или воспользуйтесь поиском по форуму:
lupus1libertas
3 / 3 / 0
Регистрация: 27.07.2012
Сообщений: 19
31.07.2012, 10:16  [ТС]     return и дестуктор #14
Да ,именно это и сделал .
Yandex
Объявления
31.07.2012, 10:16     return и дестуктор
Ответ Создать тему
Опции темы

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