查看: 4606|回復: 13
打印 上一主題 下一主題

在GCCAVR C++中如何重載new

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2009-4-2 23:05:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: GCCAVR , 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;
}
沙發(fā)
 樓主| 發(fā)表于 2009-4-2 23:05:56 | 只看該作者
可恨的
板凳
 樓主| 發(fā)表于 2009-4-3 23:28:53 | 只看該作者
2個(gè)“:”后跟o就壞事了
地板
發(fā)表于 2009-4-4 00:04:43 | 只看該作者
::O
地下室
發(fā)表于 2009-4-4 00:05:21 | 只看該作者
::O
6
 樓主| 發(fā)表于 2009-4-4 00:35:25 | 只看該作者
C++中運算符重載operator是不允許大寫(xiě)O的~~~

俺的程序都是源碼,不可能誤導人民群眾。
所以本站很不順也~~~
7
發(fā)表于 2009-4-6 14:59:06 | 只看該作者
呵呵
8
發(fā)表于 2009-4-6 15:33:04 | 只看該作者
這也太幽默了~
9
發(fā)表于 2009-4-24 22:59:16 | 只看該作者
經(jīng)常有這個(gè)問(wèn)題。

  1. ::o
復制代碼
10
發(fā)表于 2009-4-24 23:00:29 | 只看該作者
用代碼就不會(huì )了
11
發(fā)表于 2009-4-24 23:01:25 | 只看該作者
這樣就好了。
  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. }
復制代碼
12
發(fā)表于 2009-4-25 01:12:51 | 只看該作者
恩。真有辦法
13
 樓主| 發(fā)表于 2009-6-10 00:58:01 | 只看該作者
搞不清楚~~~
14
發(fā)表于 2015-2-7 10:10:02 | 只看該作者
支持一下
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页