電子工程網(wǎng)

標題: 在GCCAVR C++中如何重載new [打印本頁(yè)]

作者: hotpower    時(shí)間: 2009-4-2 23:05
標題: 在GCCAVR C++中如何重載new
hotpower 發(fā)表于 2005-1-31 00:24

在GCCAVR C++中如何重載new,delete

void * operator new (size_t size)
{
void * ptr;
  ptr = malloc(size);
  if (!ptr) return ptr;
  memset(ptr, '\0', size);
  return ptr;
}


void  operator delete(void * obj)
{
  free(obj);
}

應用:
inline String::String(const char * str)
{
  if (!str) {
    _size = 0;
    _string = 0;
  }
  else {
    _size = strlen(str);
    _string = new char(_size + 1);
    strcpy(_string, str);
  }
}

inline String & String:perator = (const char * s)
{
  if (!s) {
    _size = 0;
    delete _string;
    _string = 0;
  }
  else {
    _size = strlen(s);
    delete _string;
    if (_size == 0) _string = 0;
    else {
      _string = new char(_size + 1);
      strcpy(_string, s);
    }
  }
  return *this;
}

作者: hotpower    時(shí)間: 2009-4-2 23:05
可恨的
作者: hotpower    時(shí)間: 2009-4-3 23:28
2個(gè)“:”后跟o就壞事了
作者: admin    時(shí)間: 2009-4-4 00:04
::O
作者: admin    時(shí)間: 2009-4-4 00:05
::O
作者: hotpower    時(shí)間: 2009-4-4 00:35
C++中運算符重載operator是不允許大寫(xiě)O的~~~

俺的程序都是源碼,不可能誤導人民群眾。
所以本站很不順也~~~
作者: 李冬發(fā)    時(shí)間: 2009-4-6 14:59
呵呵
作者: 老郭    時(shí)間: 2009-4-6 15:33
這也太幽默了~
作者: 李冬發(fā)    時(shí)間: 2009-4-24 22:59
經(jīng)常有這個(gè)問(wèn)題。

  1. ::o
復制代碼

作者: 李冬發(fā)    時(shí)間: 2009-4-24 23:00
用代碼就不會(huì )了
作者: 李冬發(fā)    時(shí)間: 2009-4-24 23:01
這樣就好了。
  1. 在GCCAVR C++中如何重載new,delete

  2. void * operator new (size_t size)
  3. {
  4. void * ptr;
  5.   ptr = malloc(size);
  6.   if (!ptr) return ptr;
  7.   memset(ptr, '\0', size);
  8.   return ptr;
  9. }


  10. void  operator delete(void * obj)
  11. {
  12.   free(obj);
  13. }

  14. 應用:
  15. inline String::String(const char * str)
  16. {
  17.   if (!str) {
  18.     _size = 0;
  19.     _string = 0;
  20.   }
  21.   else {
  22.     _size = strlen(str);
  23.     _string = new char(_size + 1);
  24.     strcpy(_string, str);
  25.   }
  26. }

  27. inline String & String::operator = (const char * s)
  28. {
  29.   if (!s) {
  30.     _size = 0;
  31.     delete _string;
  32.     _string = 0;
  33.   }
  34.   else {
  35.     _size = strlen(s);
  36.     delete _string;
  37.     if (_size == 0) _string = 0;
  38.     else {
  39.       _string = new char(_size + 1);
  40.       strcpy(_string, s);
  41.     }
  42.   }
  43.   return *this;
  44. }
復制代碼

作者: bakedham    時(shí)間: 2009-4-25 01:12
恩。真有辦法
作者: hotpower    時(shí)間: 2009-6-10 00:58
搞不清楚~~~
作者: pcbkey    時(shí)間: 2015-2-7 10:10
支持一下




歡迎光臨 電子工程網(wǎng) (http://selenalain.com/) Powered by Discuz! X3.4
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页