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

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

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

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

14.04.2011, 19:48. Просмотров 647. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2011, 19:48     Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса?
Посмотрите здесь:

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

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

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

В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти? - 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++
В книге Г. Шилдта написано, что конструктор копирования может неявно вызываться, при инициализации объекта значением, которое возращает...

Какой конструктор вызывается при value initialization объекта? - C++
Привет, есть вот такой код, например: #include <iostream> struct Test { int data; Test() : data(30) { std::cout <<...

Не вызывается конструктор базового класса - C++
Доброго времени суток. У меня проблема:в производном классе не вызывается конструктор базового класса. Думаю описывать класс не стоит,...

Почему конструктор вызывается при присвоении объекта другому объекту - C++
оператор+ выполняется нормально, но когда уже переменная в sum, на след шаге она вызывает конструктор, ибо у меня в примере 9 выходит. А в...


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

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

Добавлено через 2 минуты
хотя впринциае я понял, мжно просто сделать проверку на указатель была ли ему присвоена какаято память до этого и всё....
Yandex
Объявления
14.04.2011, 20:11     Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса?
Ответ Создать тему
Опции темы

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