English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Проблемы, возникающие при использовании new для инициализации членских указателей объекта
В конструкторе используется new для инициализации членских указателей, тогда в деструкторе необходимо использовать delete, и new соответствует delete, new[] соответствует delete[].
При наличии нескольких конструкторов, они должны использовать new одним и тем же образом, или не использовать new, или не использовать new[], так как существует только один деструктор, все конструкторы должны быть совместимы с деструктором.
PS.もちろん, при инициализации указателя с помощью new в конструкторе, указатель можно инициализировать как пустой (0/NULL или nullptr в C++11), так как delete, независимо от наличия [], совместим с пустым указателем.
Необходимо определить копирующий конструктор и конструктор назначения, чтобы с помощью глубокого копирования инициализировать один объект для другого, один объект копируется в другой объект, как показано ниже:
Конструктор копирования:
String:String(const String & st) { num_Strings++; len = st.len; str = new char[len+1]; std::strcpy(str, st.str); }
Конструктор назначения:
String & String:operator=(const String & st) { if(this == &st) возврат *this; else delete [] str; len = st.len; str = new char[len+1]; std::strcpy(str, st.str); возврат *this; }
Вот и все, что есть в этой статье, я надеюсь, что содержание статьи поможет вам в изучении или работе, и я также надеюсь, что вы будете активно поддерживать учебник!
Заявление: содержание этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, загружен самостоятельно, сайт не имеет права собственности, не прошел редактирование, не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите спорное содержание, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @), и предоставьте соответствующие доказательства. Если факт будет подтвержден, сайт немедленно удалят спорное содержание.