//--------------------------------------------------------------------------- #ifndef TnewH #define TnewH //--------------------------------------------------------------------------- // Template new // delete °¡ ÇÊ¿ä¾ø´Â ½º¸¶Æ® new. // ¸Þ¸ð¸®¸¦ Èü¿¡ ÇÒ´ç¹Þ°í ÀÚµ¿À¸·Î ¼ÓÀº 0·Î ÃʱâÈ­ ÇÑ´Ù. // ±×·¯¹Ç·Î, ±âº»Çü°ú String ¿Ü typename T°¡ »ý¼ºÀÚ¸¦ °ÅÄ£ÈÄ 0À¸·Î ÃʱâÈ­ µÇ¸é ¾ÈµÇ´Â Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é ¾ÈµÇ³ª, // »ç¿ëÇØ¾ß ÇÒ¶§´Â »ý¼ºÀÚ¿¡¼­ ZeroMemory°¡ µ¿ÀÛÇÏÁö ¾Ê¾Æ¾ß ÇϹǷΠ»ý¼ºÀÚ(Å©±â,false) ¸¦ ÀÎÀÚ·Î ÁØ´Ù. // Âü°í:String, TStringList, TList ´Â »ý¼ºµÈ Á÷ÈÄ ¸Þ¸ð¸®°¡ ¸ðµÎ 0À̹ǷÎ, 0À¸·Î ÀçÃʱâÈ­ °¡´ÉÇÏÁö¸¸ ÀϺη¯ ±×·² ÇÊ¿ä¾ø´Ù. // // Written by ±èżº cppbuilder@naver.com template class Tnew { private: T *p; int m_Size; public: __property int Count = { read = m_Size }; public: Tnew(int SIZE, bool bClear = true) { p = new T[SIZE]; if (bClear) ZeroMemory(p, sizeof(T) * SIZE); m_Size = SIZE; } ~Tnew() { delete[] p; } // ¿¬»êÀÚ ¿À¹ö·Îµù. Tnew& operator=(Tnew& src) { delete[] p; p = new T[src.Count]; memcpy(p, (T *)src, src.Count * sizeof(T)); m_Size = src.Count; return *this; } T* operator->() { return p; } T& operator*() { return *p; } operator T*() { return p; } }; //--------------------------------------------------------------------------- #endif