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

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

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

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

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

Как работает деструктор и конструктор при наследовании? - C++
Возникла проблемка, не пойму, как работает деструктор и конструктор в моей программе. Я не вызываю явно конструктор, как в этом случае...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Деструктор и конструктор копирования не работают - C++
Если котротко, то проблему можнео описать в двух словах: не могу написать деструктор и конструктор копирования к классу Матрица. ...

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Деструктор при наследовании - C++
Имеется 3 класса (базовый -&gt; производный -&gt; производный2) в классе базовый имеется переменная char* var; в производном тоже есть 1...

Не работает конструктор при наследовании - C++
#include &lt;iostream&gt; using namespace std; #include &lt;locale&gt; #include &lt;time.h&gt; #include &lt;windows.h&gt; class TArray { ...

6
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.09.2012, 15:46 #2
копирующий конструктор базового класса не вызывается. Вызывайте его в явном виде
1
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
29.09.2012, 15:47 #3
deleted
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
29.09.2012, 16:02  [ТС] #4
Цитата Сообщение от I.M. Посмотреть сообщение
копирующий конструктор базового класса не вызывается. Вызывайте его в явном виде
не понял...констр копир. вызвать в производном конструкторе копир. ?:

Добавлено через 11 минут
Еще такой вопрос, если напишу оператор присваивания для B, то для A тоже нужно будет, или будет и так работать?
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
29.09.2012, 16:05 #5
деструктор ~A сделай виртуальным
1
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
29.09.2012, 16:08  [ТС] #6
можно ли присвоить объекту B типа, объект A типа ?
0
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();
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2012, 17:19
Привет! Вот еще темы с ответами:

Конструктор при наследовании (классы) - C++
Не могу понять, в чем ошибка, точнее она в конструкторе производного класса... #include &lt;iostream&gt; using namespace std; class...

Конструктор при множественном наследовании - C++
#include &lt;string&gt; class Worker // an abstract base class { private: std::string fullname; long id; public: ...

Конструктор переноса при наследовании в шаблонном классе - C++
Здравствуйте. Возможно ли как-то реализовать то, что я пытаюсь сделать? template&lt;typename T&gt; class Interface { protected: T...

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


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

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

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