Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Заблокирован
1

констр. копий

12.02.2012, 18:08. Показов 614. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <conio.h>
#include <iostream>
using namespace std;
class A
{
    int *mas;
    int size;
public:
    A(int size1)
    {
        mas=new int [size1];
        if(!mas)
        {
            cout<<"error memory"<<endl;
            exit(1);
        }
        size=size1;
        cout<<"constructor with parameters"<<endl;
    }
    A(const A &ob)
    {
        mas=new int [ob.size];
        cout<<"constructor of copy"<<endl;
    }
    ~A()
    {
        delete [] mas;
        cout<<"destructor"<<endl;
        getch();
    }
};
A func()
{
    int size2;
    cin>>size2;
    A ob1(size2);
    return ob1;
}
int main()
{
    func();
    return 0;
}
привет
почему в конструкторе копий параметр - адрес объекта???
что сначала удаляется объект или копия?
и верный ли вообще код?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2012, 18:08
Ответы с готовыми решениями:

Большое количество вызовов констр-ра и дестр-ра
Добрый день! Есть класс для подсчёта указателей на объект и класс, который сопровождает или...

Конструктор копий
Можно ли вызвать в конструкторе копий, конструктор, если объекту нечего передавать? Класс -...

Конструктор копий
Добрый день, изучая работу со списками и классы, дошел до такой проблемы: Нужно было создать...

Конструктор копий
Добрый день! Пытаюсь разобраться с конструктором копий, а именно: когда его использовать и как...

6
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
12.02.2012, 18:34 2
Цитата Сообщение от ТОрчОК Посмотреть сообщение
почему в конструкторе копий параметр - адрес объекта???
не адрес, ссылка на константу

Цитата Сообщение от ТОрчОК Посмотреть сообщение
и верный ли вообще код?
вызывать exit в С++ - моветон
не хватает оператора присваивания


Цитата Сообщение от ТОрчОК Посмотреть сообщение
C++
1
2
3
4
5
6
7
A func()
{
* * * * int size2;
* * * * cin>>size2;
* * * * A ob1(size2); //вызов конструктора с параметром
* * * * return ob1; //вызов конструктора конструктора копирования и вызов деструктора для ob1
}
+ в main вызывается деструктор
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.02.2012, 21:25 3
Цитата Сообщение от Jupiter Посмотреть сообщение
вызывать exit в С++ - моветон
Тем более в конструкторе.
0
Заблокирован
13.02.2012, 00:06  [ТС] 4
Цитата Сообщение от Jupiter Посмотреть сообщение
не адрес, ссылка на константу
а почему ссылка, а не просто переменная

Цитата Сообщение от Jupiter Посмотреть сообщение
вызывать exit в С++ - моветон
не хватает оператора присваивания
вызы
как лучше сделать?
Цитата Сообщение от Jupiter Посмотреть сообщение
+ в main вызывается деструктор
для копии?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.02.2012, 00:51 5
Цитата Сообщение от ТОрчОК Посмотреть сообщение
а почему ссылка, а не просто переменная
потому что по стандарту конструктор копий имеет 4-ри сигнатуры и все имеют параметром именно ссылку с тем или инным модификатором

Добавлено через 2 минуты
Цитата Сообщение от ТОрчОК Посмотреть сообщение
как лучше сделать?
new выбросит исключение, ловить его или нет - дело того кто будет пользоватся этим классом

C++
1
2
3
4
5
6
7
8
9
10
11
12
A func()
{
 int size2;
 cin>>size2;
 A ob1(size2); //вызов конструктора с параметром
 return ob1; //вызов конструктора конструктора копирования и вызов деструктора для ob1
}
int main()
{
 func(); //вызов деструктора для объекта который вернула func()
 return 0;
}
1
Заблокирован
13.02.2012, 02:34  [ТС] 6
последний момент с деструктором мне не совсем понятен, что необходимо исправить? у меня выводится 2 деструктора при отладке, как я понял один для объекта а другой для копии, или как верно?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.02.2012, 03:21 7
Цитата Сообщение от ТОрчОК Посмотреть сообщение
у меня выводится 2 деструктора при отладке, как я понял один для объекта а другой для копии, или как верно?
все верно
0
13.02.2012, 03:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2012, 03:21
Помогаю со студенческими работами здесь

конструкторы копий
1) правильно ли я понял задание class noname { public: noname() : pstring(new...

Вызов конструктора копий
Всех приветствую! Имеется следующий простенький код: #include &lt;iostream&gt; using namespace...

Классы: конструктор копий
Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка Есть...

Конструктор копий по умолчанию.
Почему, когда в vc++ vdfsadsad Добавлено через 46 секунд Почему если идёшь по коду с заходом в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru