Как вызвать оператор = или деструктор суперкласса?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как вызвать оператор = или деструктор суперкласса?

Сообщение Anonymous »

У меня есть класс A с именем члена кучи:

Код: Выделить всё

class A {
protected:
char *name;

public:
// Constructor
A() {
name = new char[10];
strcpy(name, "Undefined");
}

// Assignment Operator
virtual A &operator=(const A &rhs) {
if (this == &rhs) {
return *this;
}

delete [] name;
name = new char[10];
strcpy(name, rhs.name);

return *this;
}

// Destructor
virtual ~A() {
delete [] name;
}
};
У меня есть подкласс B с дополнительной переменной «b»:

Код: Выделить всё

class B : public A {
int b;

// Constructor
B():A(),b(0){}

// Assignment Operator
virtual B& operator=(const B& rhs) {
if (this == &rhs) {
return *this;
}

delete [] name;
name = new char[10];
strcpy(name, rhs.name);

b = rhs.b;

return *this;
}

// Destructor
virtual ~B() {
delete [] name;
}
};
У меня есть подкласс C с дополнительным членом 'char* name':

Код: Выделить всё

class C : public A {
int* c;

// Constructor
C():A() {
c = new int[10];
for(int i = 0 ; i < 10 ; i++) {
c[i] = 0;
}
}

// Assignment Operator
virtual C& operator=(const C& rhs) {
if (this == &rhs) {
return *this;
}

delete [] name;
name = new char[10];
strcpy(name, rhs.name);

delete [] c;
c = new int[10];
for (int i = 0 ; i < 10 ; i++) {
c[i] = rhs.c[i];
}

return *this;
}

// Destructor
virtual ~C() {
delete [] name;
delete [] c;
}
};
Интересно, правильный ли это способ реализации оператора = и деструкторов для B и C.
Есть ли способ вызвать оператор = или деструктор A в B или C, поэтому я не пишу назначения для всех членов снова и снова.

[*]A — это базовый класс с переменной кучи
[*]B — это класс, производный от A, с дополнительным «int b»
[*]C — это класс, производный от A, с дополнительным «char* name»
< /ул>

Подробнее здесь: https://stackoverflow.com/questions/784 ... superclass
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как вызвать деструктор одноэлементных классов без CRT
    Anonymous » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать деструктор после ответа в php?
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать деструктор после ответа в php?
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать деструктор после ответа в php?
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Необходимо вызвать тривиальный деструктор в стандартных контейнерах.
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»