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

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

Войти
Регистрация
Восстановить пароль
 
ТОрчОК
Заблокирован
#1

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 18:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос констр. копий (C++):

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

конструкторы копий - C++
1) правильно ли я понял задание class noname { public: noname() : pstring(new std::string), i(0), d(0) {} noname(const...

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

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

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

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

6
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 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 вызывается деструктор
0
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.02.2012, 21:25 #3
Цитата Сообщение от Jupiter Посмотреть сообщение
вызывать exit в С++ - моветон
Тем более в конструкторе.
0
ТОрчОК
Заблокирован
13.02.2012, 00:06  [ТС] #4
Цитата Сообщение от Jupiter Посмотреть сообщение
не адрес, ссылка на константу
а почему ссылка, а не просто переменная

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

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

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

Вызов конструктора копий - C++
Почему из строк 186-191 вызывается конструктор копий 83-91? #include &quot;stdafx.h&quot; #define DEBUG #define SHOW_INVARIANTS #include...

Конструктор копий. Оператор присваивания - C++
В классе есть массив char (не динамический) размером 40 байт. Вопрос1: нужно ли для такого класса определять конструктор копий или...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
13.02.2012, 03:21
Ответ Создать тему
Опции темы

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