1. 程式人生 > >c++學習筆記 動態記憶體分配 物件、物件陣列的動態建立和釋放

c++學習筆記 動態記憶體分配 物件、物件陣列的動態建立和釋放

宣告:註明程式碼 出處http://www.weixueyuan.net/view/6347.html

當我們需要為類物件動態分配儲存空間時,我們應該使用C++語言提供的new與new[]操作符,而不要使用C語言提供的malloc函式。

C++語言提供的new和new[]操作符則不會如此,使用它們為物件分配儲存空間的同時,它們也會呼叫相應的建構函式。

操作符delete和delete[]在釋放物件儲存空間的同時也會呼叫解構函式,而free函式則不會呼叫解構函式

  1. #include<iostream>
  2. using namespace std;
  3. classtest
  4. {
  5. public:
  6. test(
    int i = 1){num = i;cout<<num<<" Constructor"<<endl;}
  7. ~test(){cout<<num<<" Destructor"<<endl;}
  8. private:
  9. int num;
  10. };
  11. int main()
  12. {
  13. test * t0 = new test(0);
  14. test * t1 = new test[5];
  15. test * t2 = (test *)malloc(sizeof(test));
  16. delete t0;
  17. delete[] t1;
  18. free(t2);
  19. return 0;
  20. }
程式執行結果:

0 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
1 Constructor
0 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor
1 Destructor