隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          有兩個(gè)代碼 第一個(gè)是朋友code兄寫(xiě)的 在他的啟發(fā)下,我發(fā)現(xiàn)自己的錯(cuò)誤 寫(xiě)了下面那個(gè)
          寫(xiě)struct或class 有兩個(gè)地方需要注意:
          第一、不能直接對(duì)成員變量附值,可以在成員函數(shù)或者構(gòu)造函數(shù)里附值
          比如
          class T{int a = 5;};//這樣是錯(cuò)的

          class T
          {
          public:
              
          int a;
              T(
          void)//構(gòu)造函數(shù)
              {
                a 
          = 5;
              }

              
          void init(void)//成員函數(shù)
              {
               a 
          = 5;
              }

          };
          是OK的

          第二、數(shù)組一般不能使用a[]或者a[][],
          比如
          class T
          {
             
          int n ;
             
          int m ;
             
          int a[n][m]//提示你不能在class使用不定大小的數(shù)組
              int aa[5][6]//除非你這樣用
          };
          要定義不定長(zhǎng)的數(shù)組,可以這樣
          class T
          {
             
          int *a//提示你不能在class使用不定大小的數(shù)組
              initArray(int m,int n)
              
          {
                a 
          = new int[m];
              }

              
          //用完記得釋放,避免野指針
               relArray()
              
          {
                delete []a;
              }

          }
          ;

          //代碼一(code兄寫(xiě)的)

          #include<iostream.h>

          class Test
          {
          public:
              
          int n;
              int m;
              int **i;
              
          void init(int m,int n)
              
          {
                  
          this->= m;
                  
          this->= n;
                  
                  i
          =new int*[m];
                  
                  
          for(int j=0;j<m;j++)
                  
          {
                      i[j]
          =new int[n];
                  }

              }

              
          void del(int m,int n)
              
          {
                  
          for(int jj=0;jj<m;jj++)
                  
          {
                      delete []i[jj];
                      i[jj]
          =NULL;
                  }

              }

          }
          ;

          int main(void)
          {
              
          int i,j;
              Test 
          *test=new Test;
              test
          ->init(5,6);
              
              
          for(i = 0;i<test->m;i++)
              
          {
                  
          for(j = 0;j<test->n;j++)
                  
          {
                      test
          ->i[i][j] = i+j;
                  }

              }

              
              
          for(i = 0;i<test->m;i++)
              
          {
                  
          for(j = 0;j<test->n;j++)
                  
          {
                      cout
          <<test->i[i][j]<<" ";
                  }

                  cout
          <<endl;
              }

              test
          ->del(5,6);
              
          return 0;
          }


          //代碼二(偶寫(xiě)滴)

          #include<iostream.h>

          class Test
          {
          public:
              
          int m;
              
          int n;
              
          int *i;
              
          int *j;

              
          void init(int m,int n)
              
          {
                  
          this->= m;
                  
          this->= n;
              }

              
          void build()
              
          {
                  i 
          = new int[this->m];
                  j 
          = new int[this->n];
              }

              
          void del()
              
          {
                  delete []i;
                  delete []j;
              }


          }
          ;

          int main(void)
          {
              
          int i,j;
              Test 
          *test=new Test;
              test
          ->init(5,6);
              test
          ->build();
              
              
          for(i = 0;i<test->m;i++)
              
          {
                  
          for(j = 0;j<test->n;j++)
                  
          {
                      test
          ->i[i] = i+j;
                      test
          ->j[j] = i+j;
                  }

              }

              
              
          for(i = 0;i<test->m;i++)
              
          {
                  
          for(j = 0;j<test->n;j++)
                  
          {
                      cout
          <<test->i[i]<<" ";
                      cout
          <<test->j[j]<<" ";
                  }

                  cout
          <<endl;
              }

              test
          ->del();
              
          return 0;
          }


          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-12-15 01:29 小尋 閱讀(1215) 評(píng)論(3)  編輯  收藏 所屬分類: c/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...

          FeedBack:
          # re: C++class里的動(dòng)態(tài)維數(shù)組定義 2007-12-16 17:08 zzzlfr
          # re: C++class里的動(dòng)態(tài)維數(shù)組定義 2007-12-21 11:18 幻想~@@~
          動(dòng)態(tài)數(shù)組最好用vector實(shí)現(xiàn) 比較方便 下面是我寫(xiě)的簡(jiǎn)單代碼   回復(fù)  更多評(píng)論
            
          # re: C++class里的動(dòng)態(tài)維數(shù)組定義 2007-12-21 11:20 幻想~@@~
          Reference: http://book.csdn.net/bookfiles/17/1001758.shtml

          #include<iostream.h>
          #include
          <vector>
          using std::vector;

          int main()
          {
              vector
          <int> *vi = new vector<int>;//聲明vi里裝的是int變量類型的是數(shù)據(jù)
              int i = 0;
              
              
          while(i<25)
              
          {
                 vi
          ->push_back(i);
                 i
          ++;
              }


              i 
          = 0;
              
          while(i<25)
              
          {
                 cout
          <<vi->at(i)<<" ";
                 i
          ++;
              }

              
              
          if(!vi)
              
          {
                  delete vi;
              }


              cout
          <<endl;

              
          return 0;
          }
            回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 清河县| 平陆县| 扎鲁特旗| 黑山县| 灌阳县| 长白| 邢台市| 涿鹿县| 凭祥市| 衡山县| 蓬安县| 合江县| 墨竹工卡县| 沛县| 兴国县| 赣榆县| 图片| 潮安县| 余江县| 巫山县| 泰兴市| 濮阳县| 梅河口市| 盐亭县| 中西区| 汨罗市| 东乌珠穆沁旗| 会理县| 肃宁县| 辽中县| 武邑县| 多伦县| 佳木斯市| 丰都县| 和政县| 渭源县| 曲麻莱县| 麦盖提县| 潼南县| 延吉市| 台东县|