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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.59
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
#1

Конструктор копирования, деструктор при наследовании - C++

29.09.2012, 15:38. Просмотров 2923. Ответов 6
Метки нет (Все метки)

Есть класс A и производный от него B. Написать конструктор копирования, деструкторы для обоих классов.
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
class A  {
public:
    int *a;
    A()  {
        a = new int[10];
        for(int i = 0; i < 10; i++)
            a[i] = i;
        //cout << "A constr " << this << endl;
    }
    A(const A &obj)  {
        a = new int[10];
        for(int i = 0; i < 10; i++)
            a[i] = obj.a[i];
        //cout << "A copy constr " << this << endl;
    }
    ~A()  {
        delete []a;
        //cout << "A destr " << this << endl;
    }
};
 
class B:public A  {
public:
    int *b;
    B()  {
        b = new int[20];
        for(int i = 0; i < 20; i++)
            b[i] = i;
        //cout <<"\tB constr " << this << endl;
    }
    B(const B &obj)  {
        b = new int[20];
        for(int i = 0; i < 20; i++)
            b[i] = obj.b[i];
        //cout << "\tB copy constr "<< this << endl;
    }
    ~B()  {
        delete []b;
        //cout << "\tB destr " << this << endl;
    }
};
Собственно вопрос верно ли написаны деструкторы и конструкторы ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2012, 15:38     Конструктор копирования, деструктор при наследовании
Посмотрите здесь:
Как работает деструктор и конструктор при наследовании? C++
Деструктор и конструктор копирования не работают C++
Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор C++
Деструктор при наследовании C++
C++ Конструктор при множественном наследовании
C++ Конструктор при наследовании (классы)
Не работает конструктор при наследовании C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.09.2012, 15:46     Конструктор копирования, деструктор при наследовании #2
копирующий конструктор базового класса не вызывается. Вызывайте его в явном виде
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
29.09.2012, 15:47     Конструктор копирования, деструктор при наследовании #3
deleted
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
29.09.2012, 16:02  [ТС]     Конструктор копирования, деструктор при наследовании #4
Цитата Сообщение от I.M. Посмотреть сообщение
копирующий конструктор базового класса не вызывается. Вызывайте его в явном виде
не понял...констр копир. вызвать в производном конструкторе копир. ?:

Добавлено через 11 минут
Еще такой вопрос, если напишу оператор присваивания для B, то для A тоже нужно будет, или будет и так работать?
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
29.09.2012, 16:05     Конструктор копирования, деструктор при наследовании #5
деструктор ~A сделай виртуальным
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
29.09.2012, 16:08  [ТС]     Конструктор копирования, деструктор при наследовании #6
можно ли присвоить объекту B типа, объект A типа ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2012, 17:19     Конструктор копирования, деструктор при наследовании
Еще ссылки по теме:
Конструктор переноса при наследовании в шаблонном классе C++
C++ Конструктор копирования при инициализации
Конструктор копирования при инициализации в header файле C++
C++ Почему не вызывается конструктор копирования при возврате объекта из функции
C++ Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику

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

Или воспользуйтесь поиском по форуму:
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.09.2012, 17:19     Конструктор копирования, деструктор при наследовании #7
Цитата Сообщение от m1Rr0r Посмотреть сообщение
можно ли присвоить объекту B типа, объект A типа ?
Можно наоборот. A value = B(); или A* value = new B();
Yandex
Объявления
29.09.2012, 17:19     Конструктор копирования, деструктор при наследовании
Ответ Создать тему
Опции темы

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