h----------------------------- #include "newandmalloc.h" #include <iostream> using namespace std; newAndMalloc::newAndMalloc() { cout<<"construct newAndMalloc..."<<endl; } newAndMalloc::~newAndMalloc() { cout<<"destruct newAndMalloc..."<<endl; deletePInt(); deletePPInt(); deletePPPInt(); } void newAndMalloc::newPInt() { cout<<"new m_pInt..."<<endl; m_pInt = new int[m_size]; //開闢空間 for (int i = 0; i < m_size; i++) //賦值 { m_pInt[i] = m_size - i; } } void newAndMalloc::newPPInt() { cout<<"new m_ppInt..."<<endl; m_ppInt = new int*[m_size]; //開闢一維的空間 for (int i = 0; i < m_size; i++) { m_ppInt[i] = new int[m_size]; //開闢二維的控件 } for (int i = 0; i < m_size; i++) //賦值 { for (int j = 0; j < m_size; j++) { m_ppInt[i][j] = i + j; } } } void newAndMalloc::newPPPInt() { cout<<"new m_pppInt..."<<endl; m_pppInt = new int**[m_size]; //開闢一維的空間 for(int i = 0; i < m_size; i++) { m_pppInt[i] = new int*[m_size]; //開闢二維的空間 for (int j = 0; j < m_size; j++) { m_pppInt[i][j] = new int[m_size]; //開闢三維的空間 } } for (int i = 0; i < m_size; i++) //賦值 { for (int j = 0; j < m_size; j++) { for (int h = 0; h < m_size; h++) { m_pppInt[i][j][h] = i + j + h; } } } } void newAndMalloc::printPInt() { cout<<"print m_pInt..."<<endl; for (int i = 0; i < m_size; i++) { cout<<m_pInt[i]<<" "; } cout<<endl; } void newAndMalloc::printPPInt() { cout<<"print m_ppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { cout<<m_ppInt[i][j]<<" "; } cout<<endl; } cout<<endl; } void newAndMalloc::printPPPInt() { cout<<"print m_pppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { for (int h = 0; h < m_size; h++) { cout<<m_pppInt[i][j][h]<<" "; } cout<<endl; } cout<<endl; } cout<<endl; } void newAndMalloc::deletePInt() { cout<<"delete m_pInt..."<<endl; delete[] m_pInt; } void newAndMalloc::deletePPInt() { cout<<"delete m_ppInt..."<<endl; for (int i = 0; i < m_size; i++) { delete[] m_ppInt[i]; } delete[] m_ppInt; } void newAndMalloc::deletePPPInt() { cout<<"delete m_pppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { delete[] m_pppInt[i][j]; } delete[] m_pppInt[i]; } delete[] m_pppInt; } testClass::testClass() { cout<<"construct testClass..."<<endl; } testClass::~testClass() { cout<<"destruct testClass..."<<endl; } cpp-------------------------------- #include "newandmalloc.h" #include <iostream> using namespace std; newAndMalloc::newAndMalloc() { cout<<"construct newAndMalloc..."<<endl; } newAndMalloc::~newAndMalloc() { cout<<"destruct newAndMalloc..."<<endl; deletePInt(); deletePPInt(); deletePPPInt(); } void newAndMalloc::newPInt() { cout<<"new m_pInt..."<<endl; m_pInt = new int[m_size]; //開闢空間 for (int i = 0; i < m_size; i++) //賦值 { m_pInt[i] = m_size - i; } } void newAndMalloc::newPPInt() { cout<<"new m_ppInt..."<<endl; m_ppInt = new int*[m_size]; //開闢一維的空間 for (int i = 0; i < m_size; i++) { m_ppInt[i] = new int[m_size]; //開闢二維的控件 } for (int i = 0; i < m_size; i++) //賦值 { for (int j = 0; j < m_size; j++) { m_ppInt[i][j] = i + j; } } } void newAndMalloc::newPPPInt() { cout<<"new m_pppInt..."<<endl; m_pppInt = new int**[m_size]; //開闢一維的空間 for(int i = 0; i < m_size; i++) { m_pppInt[i] = new int*[m_size]; //開闢二維的空間 for (int j = 0; j < m_size; j++) { m_pppInt[i][j] = new int[m_size]; //開闢三維的空間 } } for (int i = 0; i < m_size; i++) //賦值 { for (int j = 0; j < m_size; j++) { for (int h = 0; h < m_size; h++) { m_pppInt[i][j][h] = i + j + h; } } } } void newAndMalloc::printPInt() { cout<<"print m_pInt..."<<endl; for (int i = 0; i < m_size; i++) { cout<<m_pInt[i]<<" "; } cout<<endl; } void newAndMalloc::printPPInt() { cout<<"print m_ppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { cout<<m_ppInt[i][j]<<" "; } cout<<endl; } cout<<endl; } void newAndMalloc::printPPPInt() { cout<<"print m_pppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { for (int h = 0; h < m_size; h++) { cout<<m_pppInt[i][j][h]<<" "; } cout<<endl; } cout<<endl; } cout<<endl; } void newAndMalloc::deletePInt() { cout<<"delete m_pInt..."<<endl; delete[] m_pInt; } void newAndMalloc::deletePPInt() { cout<<"delete m_ppInt..."<<endl; for (int i = 0; i < m_size; i++) { delete[] m_ppInt[i]; } delete[] m_ppInt; } void newAndMalloc::deletePPPInt() { cout<<"delete m_pppInt..."<<endl; for (int i = 0; i < m_size; i++) { for (int j = 0; j < m_size; j++) { delete[] m_pppInt[i][j]; } delete[] m_pppInt[i]; } delete[] m_pppInt; } testClass::testClass() { cout<<"construct testClass..."<<endl; } testClass::~testClass() { cout<<"destruct testClass..."<<endl; } main------------------------------- #include <iostream> #include <stdio.h> #include "newandmalloc.h" int main(int argc, char *argv[]) { newAndMalloc *nam = nullptr; nam = new newAndMalloc(); nam->newPInt(); nam->newPPInt(); nam->newPPPInt(); nam->printPInt(); nam->printPPInt(); nam->printPPPInt(); delete nam; return 0; } 打印輸出------------------------ construct newAndMalloc... new m_pInt... new m_ppInt... new m_pppInt... print m_pInt... 10 9 8 7 6 5 4 3 2 1 print m_ppInt... 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 print m_pppInt... 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 14 15 16 17 18 19 20 21 22 23 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 14 15 16 17 18 19 20 21 22 23 15 16 17 18 19 20 21 22 23 24 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 14 15 16 17 18 19 20 21 22 23 15 16 17 18 19 20 21 22 23 24 16 17 18 19 20 21 22 23 24 25 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 14 15 16 17 18 19 20 21 22 23 15 16 17 18 19 20 21 22 23 24 16 17 18 19 20 21 22 23 24 25 17 18 19 20 21 22 23 24 25 26 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 12 13 14 15 16 17 18 19 20 21 13 14 15 16 17 18 19 20 21 22 14 15 16 17 18 19 20 21 22 23 15 16 17 18 19 20 21 22 23 24 16 17 18 19 20 21 22 23 24 25 17 18 19 20 21 22 23 24 25 26 18 19 20 21 22 23 24 25 26 27 destruct newAndMalloc... delete m_pInt... delete m_ppInt... delete m_pppInt...