если у меня есть строка в классе, тогда выделена память. Должен ли я уничтожить строку в деструкторе? напримерМне нужно уничтожить строку в C++
class A { string Test; A() { Test = "hello world"; } A(string &name) { Test = name; } ~A() { // do I have to destroy the string here? } }
Я старый программист c/C++ (pre stl) и возвращаюсь в C++. Является ли строка уничтоженной автоматически с помощью магии шаблона?
ТИА, Дэйв
в вашем примере, `` `` `` `` `` `` `std :: string`? – SingleNegationElimination 2010-12-04 01:11:08
Интересная вещь (для меня) заключается в деструкторе. Предоставляет ли C++ гарантию того, что объекты-члены будут уничтожены после вызова конструктора родительского объекта? Могу ли я каким-то образом предотвратить это? (Просто из любопытства, возможно, вы можете привести соответствующие разделы стандарта C++.) – 2010-12-04 01:19:29
C++ гарантирует, что ваши члены класса будут уничтожены в противоположном порядке, из которого они были созданы (это порядок, в котором они были объявлены). Более читаемое объяснение, чем стандарт C++: http://msdn.microsoft.com/en-us/library/8183zf3x(VS.80).aspx – cgmb 2010-12-04 01:47:03