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

констр. копий - C++

Восстановить пароль Регистрация
 
ТОрчОК
Заблокирован
12.02.2012, 18:08     констр. копий #1
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;
}
привет
почему в конструкторе копий параметр - адрес объекта???
что сначала удаляется объект или копия?
и верный ли вообще код?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
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 вызывается деструктор
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.02.2012, 21:25     констр. копий #3
Цитата Сообщение от Jupiter Посмотреть сообщение
вызывать exit в С++ - моветон
Тем более в конструкторе.
ТОрчОК
Заблокирован
13.02.2012, 00:06  [ТС]     констр. копий #4
Цитата Сообщение от Jupiter Посмотреть сообщение
не адрес, ссылка на константу
а почему ссылка, а не просто переменная

Цитата Сообщение от Jupiter Посмотреть сообщение
вызывать exit в С++ - моветон
не хватает оператора присваивания
вызы
как лучше сделать?
Цитата Сообщение от Jupiter Посмотреть сообщение
+ в main вызывается деструктор
для копии?
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
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;
}
ТОрчОК
Заблокирован
13.02.2012, 02:34  [ТС]     констр. копий #6
последний момент с деструктором мне не совсем понятен, что необходимо исправить? у меня выводится 2 деструктора при отладке, как я понял один для объекта а другой для копии, или как верно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2012, 03:21     констр. копий
Еще ссылки по теме:

Не хватает одного конструктора копий C++
C++ Вызов конструктора копий
Конструктор копий C++
C++ Вызов конструктора копий
C++ Конструктор копий

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.02.2012, 03:21     констр. копий #7
Цитата Сообщение от ТОрчОК Посмотреть сообщение
у меня выводится 2 деструктора при отладке, как я понял один для объекта а другой для копии, или как верно?
все верно
Yandex
Объявления
13.02.2012, 03:21     констр. копий
Ответ Создать тему
Опции темы

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