ому // исключения не генерирую
Автор admin Вторник, 5 мая 2009 11:32
ому // исключения не генерируются. Однако при использовании // классов исключения возможны, поэтому блок try используется // для демонстрационных целей (для чего и нужен пример!) strcpy(newChars. otherString): for (size_t i = 0: i < nlnts: ++i) newlnts[i] = otherInts[i]: } catch (...) { delete [] newlnts; delete [] newChars: throw: } return new MyData(newChars, newlnts. nlnts): } static MyData* clone(const MyData* otherData) { return clone(otherData->theString. otherData->theInts. otherData->numlnts): } static void cleanup(const MyData* theData) { Безопасность исключений 53 delete [] theData->theString; delete [] theData->theInts; delete theData: } publi с: HasPointersCconst char* someString. const int* somelnts. size_t numlnts) { theData = clone(someString. somelnts. numlnts): } HasPointers(const HasPointers& source) { theData = clone(source.theData): } HasPointers& operator=(const HasPointers& rhs) { if (this != &rhs) { MyData* newData = clone(rhs.theData->theString. rhs.theData->theInts. rhs.theData->numInts): cleanup(theData); theData = newData; } return *this; } -HasPointersO { cleanup(theData):
Комментарии закрыты.
Последние комментарии