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

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ что не так?не выводит значения... http://www.cyberforum.ru/cpp-beginners/thread326366.html
#include <vcl.h> #include <math.h> #include <iostream.h> #include <stdlib.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused
C++ Вывод на монитор графики, не используя WinAPI Каким образом можно осуществлять работу с графикой и мультимедиа, не используя функции winapi? Не думаю, что это невозможно, ведь полно других ОС, кроме windows, использующих графику и визуализацию. Собственно всё сводится к обращению к портам монитора, к операциям ввода-вывода? Просто недавно меня поставили в тупик, сказав, что это невозможно, или это возможно, но только с использованием... http://www.cyberforum.ru/cpp-beginners/thread326360.html
виндовая форма C++
добрый вечер. прошу помощи в реализации. есть код. но мне его в форму сделать нужно.сам код: #include <iostream> //для консоли #include <string> #include <algorithm> #include <vector> #include <map> using namespace std; class Date {
C++ Предопределение типа данных С++
Доброго времени суток) Столкнулась с проблемой - нужно было код из книги,написанный на паскале, перекодить в с++.Даны две структуры,и в каждой элементы ссылаются друг на друга..в паскале,видимо,не играет роли,а вот в си.. struct item { int key; page* p; int count; };
C++ Очередь с приоритетом http://www.cyberforum.ru/cpp-beginners/thread326337.html
Всем привет . Собственно нужно организовать очередь с приоритетом. Задание: В офисе один принтер, на печать должны подоватся те документы которые выше по приоритету. Имеются такие дефайны. Код: #define FULL 10 //макс.размер очереди #define EMPTY 0 #define DIRECTOR 10 //приоритет директора
C++ Циклы - срочно Пишу в Borland C++. Ежемесячная стипендия студента составляет А р., а расходы на проживание превышают стипендию и составляют В р. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую единовременно надо попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию. подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
27.06.2011, 20:46  [ТС]     в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант!
Да вы поймите, у меня одна проблема, она в моём незнании и она решается легко: как удалить этот объект:
C++
1
matrix_[4];
после использования
Так я понял, как. Создать его в функции и вернуть; так, а умный компилятор не будет создавать его в функции, а создаст в месте, куда он должен возвернуться и потом удалит не дожидаясь main, это там мне в ассемблерном листинге объяснили. Так что всё, проблема одна вполне рабочая, решилась.

Теперь по коду.
Я вам скажу почему мне не пришла в голову хранить массив элементов типа nemo (аналог моим указателям на строки таблицы, так?). Из-за их размера. Так, у меня хранится массив указателей на строки таблицы, каждый из указателей занимает 4 байта

А вот тут я посмотрел чему равен объект класса nemo
C++
1
 printf ("==  %d\n", sizeof (matrix<int>::nemo));
Тоже 4 байта.

То есть то на то на то и выходит, но я не умею сходу определять, что там занимает память а что нет:
C++
1
2
3
4
5
6
  class nemo;
  nemo& operator[](int nomer_stroki) {
   nemo* ne= new nemo [1];
   ne->k= (T*)(p[nomer_stroki]); 
   return *ne;
  };
Явно вижу nemo* 4 байта. НО ведь и всё остальное тоже сущности! Где они хранятся? Где-то же они есть! Ну вот я не могу определить более или менее правильно размер типа, поэтому он мне кажется большим, а на самом деле маленький.

Такая вот одна причина причина, по которой мне в голову не могло прийти создать nemo array [x]; Она может и глупая но других вроде нет. А так-то можно, да, щас я начинаю понимать, но будет наверное одинаково продуктивный код что мой что ваш.

Добавлено через 13 минут
А вот другая причина, повесомее
C++
1
2
matrix<int> y (6, 7);
y[2][4]= 99;
смотрите, у меня конструируется объект класса nemo 1(!) раз

А если ваш код такой же написать, то у вас создастся массив собъектов nemo.
silent_1991, сколько раз вызовется конструктор nemo? 6 объектов, 6 раз вызывается конструктор nemo... Эта причина повесомее будет...
 
Текущее время: 06:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru