Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / возврат объекта через конструктор копии / 25 сообщений из 29, страница 1 из 2
14.10.2013, 11:31
    #38426257
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Всем доброго времени суток.
Возникла необходимость возврата объекта по значению.
Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
#include "stdafx.h"
#include <cstring>
#include <cstdlib>
#include <iostream>

using namespace std;

class sample
{
	char* s;
public:
	sample();
	sample(const sample& obj);
	~sample();
};

sample::sample()
{
	cout << "Simple constructor \n"; 
	s = new char;
	strcpy(s,"uerynvus");
}

sample::sample(const sample& obj)
{
	cout << "Copy constructor \n";
	char* s = new char;
	*s = *obj.s;
}

sample::~sample()
{
	cout << "Destructor. \n";
	if(s) delete [] s; 
}

sample input()
{
	sample str;
	return str;
}

int _tmain(int argc, _TCHAR* argv[])
{
	sample ob;
	ob = input();

	return 0;
}



вот схема реализации.
может кто сказать где ошибка?
...
Рейтинг: 0 / 0
14.10.2013, 12:17
    #38426352
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnix,

Вообще, ошибка наверное в ДНК, но появляться это в данном случае тут:

s = new char;
...
Рейтинг: 0 / 0
14.10.2013, 12:19
    #38426358
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Впрочем, это не единственная ошибка ...
...
Рейтинг: 0 / 0
14.10.2013, 12:22
    #38426365
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZiv,

Это академическая задача из учебника. Просто было интересно как ответят на нее местные "зубры".
...
Рейтинг: 0 / 0
14.10.2013, 12:22
    #38426366
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
По ответу все понятно.
...
Рейтинг: 0 / 0
14.10.2013, 12:37
    #38426398
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixЭто академическая задача из учебника. Просто было интересно как ответят на нее местные "зубры".

Не понял, это РЕАЛИЗАЦИЯ из учебника, или только задача ?
Код чей ? Из учебника ?
...
Рейтинг: 0 / 0
14.10.2013, 12:38
    #38426401
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixПо ответу все понятно.

Тебе вообще чё надо-то? А ?
...
Рейтинг: 0 / 0
14.10.2013, 12:41
    #38426409
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZiv,

и задача и код из учебника.
А вот ответы на русскоязычных форумах просто впечатляют.
Если на англоязычных форумах задаешь вопрос, то тебе по делу отвечают или честно говорят что не знаем.
На наших форумах если нет возможности выпендриваться то скажут что ты идиот ну или что-то похожее.
...
Рейтинг: 0 / 0
14.10.2013, 12:44
    #38426415
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZiv,

А задача на самом деле очень реальная. Возврат объекта по значению.
Просто было интересно как медленно будут соображать местные "зубры" прежде чем дадут правильный ответ.
...
Рейтинг: 0 / 0
14.10.2013, 12:45
    #38426421
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixMasterZiv,

и задача и код из учебника.
А вот ответы на русскоязычных форумах просто впечатляют.
.

Не верю. дай ссылку на учебник.

lnixЕсли на англоязычных форумах задаешь вопрос, то тебе по делу отвечают или честно говорят что не знаем.
На наших форумах если нет возможности выпендриваться то скажут что ты идиот ну или что-то похожее.

Мне отвечать на дурацкие вопросы просто так скучно.
Я тебе показал на строку, где ошибка. Думай, в чём она заключается.
Подумаешь, пришлёшь ответ, я тебе укажу на другую.
...
Рейтинг: 0 / 0
14.10.2013, 12:49
    #38426431
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZivlnixMasterZiv,

и задача и код из учебника.
А вот ответы на русскоязычных форумах просто впечатляют.
.

Не верю. дай ссылку на учебник.

lnixЕсли на англоязычных форумах задаешь вопрос, то тебе по делу отвечают или честно говорят что не знаем.
На наших форумах если нет возможности выпендриваться то скажут что ты идиот ну или что-то похожее.

Мне отвечать на дурацкие вопросы просто так скучно.
Я тебе показал на строку, где ошибка. Думай, в чём она заключается.
Подумаешь, пришлёшь ответ, я тебе укажу на другую.

"Думай в чем она заключается" означает только одно - я не знаю как это решить. Все остальное мешура.
...
Рейтинг: 0 / 0
14.10.2013, 12:56
    #38426448
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnix"Думай в чем она заключается" означает только одно - я не знаю как это решить. Все остальное мешура.Мишура
...
Рейтинг: 0 / 0
14.10.2013, 12:59
    #38426456
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Ёшlnix"Думай в чем она заключается" означает только одно - я не знаю как это решить. Все остальное мешура.Мишура

Можно и так (и это правильно). Хотя данном случае это не принципиально.
...
Рейтинг: 0 / 0
14.10.2013, 13:58
    #38426581
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixХотя данном случае это не принципиально.
В данном случае принципиально то, что возврат объекта по значению - чисто теоретическая
задача. На практике за неё отрывают руки те, кто заботится о производительности. А те, кто
о ней не заботятся, пишут на чём угодно кроме С++.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.10.2013, 14:33
    #38426669
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnix,

Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
#include "stdafx.h"
#include <cstring>
#include <cstdlib>
#include <iostream>

using namespace std;

class sample
{
	char* s;
public:
	sample();
	sample(const sample& obj);
        sample& operator=(const sample& obj);
	~sample();
};

sample::sample() : s(0)
{
	cout << "Simple constructor \n"; 
	s = new char[strlen("uerynvus")+1];
	strcpy(s,"uerynvus");
}

sample::sample(const sample& obj) : s(0)
{
	cout << "Copy constructor \n";
        s = strcpy(new char[strlen(obj.s)+1], obj.s);
}

sample& sample::operator=(const sample& obj)
{
	cout << "Assign operator \n";
        if( &obj != this ) {
          delete [] s;
          strcpy(s = new char[strlen(obj.s)+1], obj.s);
        }
}

sample::~sample()
{
	cout << "Destructor. \n";
	delete [] s; 
}

sample input()
{
	sample str;
	return str;
}

int _tmain(int argc, _TCHAR* argv[])
{
	sample ob;
	ob = input();

	return 0;
}
...
Рейтинг: 0 / 0
14.10.2013, 15:11
    #38426751
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Анатолий Широковlnix,

Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
#include "stdafx.h"
#include <cstring>
#include <cstdlib>
#include <iostream>

using namespace std;

class sample
{
	char* s;
public:
	sample();
	sample(const sample& obj);
        sample& operator=(const sample& obj);
	~sample();
};

sample::sample() : s(0)
{
	cout << "Simple constructor \n"; 
	s = new char[strlen("uerynvus")+1];
	strcpy(s,"uerynvus");
}

sample::sample(const sample& obj) : s(0)
{
	cout << "Copy constructor \n";
        s = strcpy(new char[strlen(obj.s)+1], obj.s);
}

sample& sample::operator=(const sample& obj)
{
	cout << "Assign operator \n";
        if( &obj != this ) {
          delete [] s;
          strcpy(s = new char[strlen(obj.s)+1], obj.s);
        }
}

sample::~sample()
{
	cout << "Destructor. \n";
	delete [] s; 
}

sample input()
{
	sample str;
	return str;
}

int _tmain(int argc, _TCHAR* argv[])
{
	sample ob;
	ob = input();

	return 0;
}



Просто блеск...
Ну есть же спецы нормальные у нас...
Почему же Вы все прячетесь?!
...
Рейтинг: 0 / 0
14.10.2013, 15:13
    #38426752
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Dimitry SibiryakovlnixХотя данном случае это не принципиально.
В данном случае принципиально то, что возврат объекта по значению - чисто теоретическая
задача. На практике за неё отрывают руки те, кто заботится о производительности. А те, кто
о ней не заботятся, пишут на чём угодно кроме С++.


Касаемо вышесказанного полностью согласен, но уж так подмывало меня опубликовать эту задачу.
...
Рейтинг: 0 / 0
14.10.2013, 16:22
    #38426867
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Dimitry SibiryakovlnixХотя данном случае это не принципиально.
В данном случае принципиально то, что возврат объекта по значению - чисто теоретическая
задача. На практике за неё отрывают руки те, кто заботится о производительности. А те, кто
о ней не заботятся, пишут на чём угодно кроме С++.


Это ты глубоко неправ.
...
Рейтинг: 0 / 0
14.10.2013, 16:24
    #38426872
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixПросто блеск...
Ну есть же спецы нормальные у нас...
Почему же Вы все прячетесь?!

Пожалел тебя просто Толя...
А зря...
...
Рейтинг: 0 / 0
14.10.2013, 16:52
    #38426932
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZivlnixПросто блеск...
Ну есть же спецы нормальные у нас...
Почему же Вы все прячетесь?!

Пожалел тебя просто Толя...
А зря...

Да нет тут жалость не при чем.
Просто у него перцатости поменьше а человеческого побольше.
...
Рейтинг: 0 / 0
14.10.2013, 16:53
    #38426936
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
MasterZivlnixПросто блеск...
Ну есть же спецы нормальные у нас...
Почему же Вы все прячетесь?!

Пожалел тебя просто Толя...
А зря...

Если внимательно будешь читать посты на которые пишешь комментарии, это чисто академическая задача, следовательно ответ мне был известен заранее, а вот к кому с вопросами обращаться если возникнут проблемы теперь совершенно определенно ясно.
...
Рейтинг: 0 / 0
14.10.2013, 17:23
    #38426983
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixЕсли внимательно будешь читать посты на которые пишешь комментарии, это чисто академическая задача, следовательно ответ мне был известен заранее, а вот к кому с вопросами обращаться если возникнут проблемы теперь совершенно определенно ясно.
Вообще-то MasterZiv в первом же сообщении указал на грубейную ошибку в коде, по сравнению с которой остальное не имеет значение. Т.е. он максимально конкретно и точно ответил на вопрос "где ошибка?"

А теперь давайте свой ответ
...
Рейтинг: 0 / 0
14.10.2013, 18:11
    #38427080
lnix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
Anatoly MoskovskylnixЕсли внимательно будешь читать посты на которые пишешь комментарии, это чисто академическая задача, следовательно ответ мне был известен заранее, а вот к кому с вопросами обращаться если возникнут проблемы теперь совершенно определенно ясно.
Вообще-то MasterZiv в первом же сообщении указал на грубейную ошибку в коде, по сравнению с которой остальное не имеет значение. Т.е. он максимально конкретно и точно ответил на вопрос "где ошибка?"

А теперь давайте свой ответ

Грубейшая ошибка в том что ответить нужно было : возврат делается через перезагрузку оператора =.
Вот и весь ответ.
А все остальное это попытка прикрыть свою задницу и прикрыть свою полнейшую некомпетентность.
Компетентные люди показывают это сразу.
А натыкать пару строк дело 1-2 минут.
Короче все уже и так ясно.
Дальнейший диалог превратится о обычный треп.
...
Рейтинг: 0 / 0
14.10.2013, 18:19
    #38427089
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixMasterZivпропущено...


Пожалел тебя просто Толя...
А зря...

Да нет тут жалость не при чем.
Просто у него перцатости поменьше а человеческого побольше.

У него всего ровно столько же, что и у меня.
Просто был в хорошем настроении. Так что тебе просто повезло.
Кстати, я был в плохом.

P.S. А ты топиком-то вообще чё хотел-то ?
...
Рейтинг: 0 / 0
14.10.2013, 18:22
    #38427091
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
возврат объекта через конструктор копии
lnixГрубейшая ошибка в том что ответить нужно было : возврат делается через перезагрузку оператора =.
Вот и весь ответ.


Этого в принципе нельзя сделать.

lnixА все остальное это попытка прикрыть свою задницу и прикрыть свою полнейшую некомпетентность.
Компетентные люди показывают это сразу.
А натыкать пару строк дело 1-2 минут.
Короче все уже и так ясно.
Дальнейший диалог превратится о обычный треп.

Походу, ты нихрена так и не понял.
Ну что ж...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / возврат объекта через конструктор копии / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]