В классе, в котором я участвую, рефакторинг деструктора не позволяет уничтожить его массив.Исправьте массив-член в C++
class MyClass{
public:
double a;
double rect[4];
MyClass();
~MyClass();
};
MyClass::MyClass() : a(123.0)
{
memset(rect, 0, 4 * sizeof(double));
}
MyClass::~MyClass() {}
Как его правильно уничтожить? Достаточно просто delete
или мне также нужно установить следующее после?
delete[] rect;
*rect= NULL;
Вы ничего не делаете, это не динамически выделяется. – jrok
Кажется, вы изучаете C++ из источника подпара (любой достойный источник заставил бы вас четко осознавать, как это работает в C++ к тому времени, когда он вводит 'delete'). Если вы заинтересованы, мы сохраним [кураторский список хороших книг] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list). –
И пока я нахожусь на нем, я бы посоветовал «memset», поскольку он бесполезен для ошибок; вы должны использовать 'std :: fill' с' std :: begin' и 'std :: end' (если ваш компилятор не обновлен, эти последние два легко реализовать: https: // gist. github.com/rmartinho/3959946). –