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

Динамическое выделение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр http://www.cyberforum.ru/cpp-beginners/thread643468.html
Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр. подсчитать кол-во Решаю ее в таком ключе, подскажите, пожалуйста, в каком месте ошибка и как изменить алгоритм...
C++ Сложение разных типов У меня из файла в переменную int считывется число.. Мне нужно занести в переменную string это число + строка. Например int i; string str; str = "STROKA" + i; http://www.cyberforum.ru/cpp-beginners/thread643467.html
fflush(stdin) C++
В одной из ранее открытых тем, было сказано, что fllush(stdin) лучше не использовать. Чем можно заменить эту функцию?
неправильность вызова qsort C++
#include <iostream> #include <iomanip> using namespace std; struct User { int id; char nickname; int karma; };
C++ Массив http://www.cyberforum.ru/cpp-beginners/thread643447.html
Здравствуйте. Заранее прошу прощения, наверно вопрос баянистый. Пытался узнать длину массива таким способом: int lenght = sizeof(a)/sizeof(int);Здесь а - целочисленный массив. Дело в том, что в...
C++ Нужна консультация #include <iostream> #define N 30 using namespace std; int main() { int a; int i,k; float sum; for (i=0; i<N; i++) if ( a < 0) if (a/N) k+=a; подробнее

Показать сообщение отдельно
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.08.2012, 15:23
никак. деструктор нельзя звать для неполностью сконструированного объекта.
откат делается за счет идиомы RAII (Resource allocation is initialization). Как уже сказали, мемберы, для которых выделяется память лучше заворачивать в смарт поинтеры. В этом случае все отработает как надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Foo
{
   std::auto_ptr<int> m_ptr1;
   std::auto_ptr<int> m_ptr2;
 
public:
   Foo()
     : m_ptr1(new int(1))
     , m_ptr2(new int(2)) // вот тут летит исключение
   {
   }
};
В такой ситуации объект m_ptr1 будет полностью сконструирован, а m_ptr2 - нет. Т.к. деструкторы зовутся для полностью сконструированных объектов а m_ptr1 - как раз такой объект, а не голый указатель, для него деструктор позовется несмотря на то, что деструктор класса Foo вызван не будет. Деструктор auto_ptr<T> как раз позовет delete для указателя, который хранится в этом смарт-поинтере
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru