Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
mansp
18 / 18 / 7
Регистрация: 07.11.2010
Сообщений: 136
#1

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

14.04.2011, 19:48. Просмотров 698. Ответов 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++):

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

Конструктор копирования для динамического объекта класса приемника
class first_class { public: first_class(int q) { m_q=q;...

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

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

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

НЕ вызывается конструктор копирования
НЕ вызывается конструктор копирования (не явно), как сделать чтобы это было...

2
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
14.04.2011, 19:57 #2
В строке 29 вызывается не конструктор копирования, а operator=. Его нужно реализовывать отдельно.
Особо умный компилятор может "догадаться" и использовать копирование.
Всегда, когда создаётся свой конструктор копирования, необходимо реализовывать и operator=.
0
mansp
18 / 18 / 7
Регистрация: 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
Привет! Вот еще темы с решениями:

Почему не вызывается конструктор копирования?
...У меня в книге описаны случаи при которых вызывается конструктор...

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

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

Конструктор копирования для класса стек
Почему не хочет работать конструктор копирования? struct Item { int...


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

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

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