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

Скопировать объект, на который ссылается указатель на абстрактный класс - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить наибольшее число k, для которого 2^k<n http://www.cyberforum.ru/cpp-beginners/thread1809083.html
Вводится натуральное число n. Получить наибольшее число k, для которого 2^k<n . Не могу сообразить как сделать. Через логарифм может быть. Будьте добры подсказать пожалуйста.
C++ Ошибка компиляции простой программы Написана программа на Borland 6 C++ в консольном режиме ( Console Wizard ) , но проверить ее работоспобность на самой программе ну никак не получается( сама программа выдает ошибку, скачивал с... http://www.cyberforum.ru/cpp-beginners/thread1809074.html
Как ввести в программу функцию из стороннего файла? C++
Друзья, будьте добры, подскажите решение. Как ввести в программу функцию из стороннего файла. Попутно я нашел кое какую информацию, от моего преподавателя, что для работы с фку из сторонних файлов,...
C++ Специальная работа для работы с текстом (для нужд БНФ)
Здравствуйте, форумчане. Необходимо код на CSS прогнать через метатранслятор БНФ и получить на выходе терминалы, нетерминалы, служебные слова. Так как работать надо с обычным текстом, то может быть...
C++ Найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread1809015.html
Необходимо найти минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Ищет не все суммы диагоналей. Помогите пожалуйста найти ошибки. #include <iostream> ...
C++ Динамический ввод и вывод данных в двумерный массив Не могу реализовать ввод и вывод данных двумерного массива используя указатель на указатель, в чём проблема? cin >> *(*(p+n*i)+j); #include <iostream> using namespace std; int main() {... подробнее

Показать сообщение отдельно
JonyCage
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 4
20.09.2016, 16:44  [ТС]
Спасибо за помощь, но хотелось бы еще одно уточнение по поводу освобождения выделенной памяти. Теперь у меня есть все необходимые классы, для которых программа работает корректно. Но когда я освобождаю память :

C++
1
2
3
Expression *e=new Number(4);
 
delete e;
все упирается в деструктор Number. Я описал виртуальный деструктор у класса Expression, и он вызывает деструкторы всех объектов, указанных в "выражении". Но вот вопрос : как должен выглядеть деструктор класса Number, чтобы освобождать выделенную под его объекты память. Я же использую указатель на объект, и выделяю для него память. Или же деструктор по умолчанию справится с этой задачей. Хотелось бы прояснить этот механизм. Вот класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Number:public Expression
{
private:
    float n;
public:
    Number (float nn):n(nn){}
    ~Number(){std::cout<<"num des\n";}
 
    Expression *diff(){return new Number(0);} 
 
    Expression *clone(){return new Number(n);}
 
    void print(){std::cout<<n;}
 
};
Благодарю.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru