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

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

Войти
Регистрация
Восстановить пароль
 
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
#1

Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? - C++

14.04.2011, 19:48. Просмотров 657. Ответов 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
class A
{
char * v;
A();
~A();
A(const A &obj);
}
/////////////////////
A::A()
 {  
v = new char [20];
}
A::~A()
{ delete[]v;
}
 
A::A(const A &obj)
{
v=NULL
v = new char [20];
strcpy(v,obj.v)
}
//////////////////////////////
int main(....)
{
A first;
A second = first;
A third;
third = first;
}

будет ли утрачена память когда конструктор копирования вызываетса для уже сущестуещего обьекта ккласса?(third = first
как мне узнать был ли рание создан обьект в который я буду копировать в другой обьект ,или же он создаетса сразу когда мы в него копируем?(A second = first
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 19:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? (C++):

Когда вызывается конструктор копирования? - C++
Пожалуйста помогите ответить на вопрос "Когда вызывается конструктор копирования?"

Конструктор копирования для динамического объекта класса приемника - C++
class first_class { public: first_class(int q) { m_q=q; cout<<"First class say HI"<<endl; } ...

Почему не вызывается конструктор копирования при возврате объекта из функции - C++
Добрый день! Насколько мне известно, конструктор копирования вызывается: 1) при передачи объекта как аргумента функции ...

При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О - C++
Вот такой кодclass A { public: A(){} virtual ~A(){} }; class C { public:

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -> i = i; } }; Конструктор Test::Test всегда вызывается...

Почему не вызывается конструктор копирования? - C++
...У меня в книге описаны случаи при которых вызывается конструктор копирования. Один из этих случаев: : "Когда аргумент имеет тип...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1287 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 19:57 #2
В строке 29 вызывается не конструктор копирования, а operator=. Его нужно реализовывать отдельно.
Особо умный компилятор может "догадаться" и использовать копирование.
Всегда, когда создаётся свой конструктор копирования, необходимо реализовывать и operator=.
0
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
14.04.2011, 20:11  [ТС] #3
у сеня в подобных случаях вызываетса именно конструктор копирования (MVS 2008),
а как насчёт второго вопроса?

Добавлено через 2 минуты
хотя впринциае я понял, мжно просто сделать проверку на указатель была ли ему присвоена какаято память до этого и всё....
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2011, 20:11
Привет! Вот еще темы с ответами:

В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти? - C++
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти?

Сколько раз вызывается конструктор копирования - C++
Почему n не увеличивается? Point(const Point& src){ n++; set(src.x+1, src.y+1); cout << "Konstruction copyrovanija...

Cделать конструктор по умолчанию и копирования для класса - C++
Вот у меня класс строка: class strg { char *str; int len; public: strg(); strg(const strg &); }; реализация:

Конструктор копирования для класса с указателем на абстрактный класс - C++
Всем привет. Как реализовать конструктор копирования для класса Foo? class Base { public: ... ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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