деструктор с ++ не вызывали? - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть класс:

class Rectangle { 
     int width; 
     int height; 
 public: 
     Rectangle(int w, int h) { 
       width = w; 
       height = h; 
       cout << "Constructing " << width << " by " << height << " rectangle.\n"; 
     } 

     ~Rectangle() {  
        cout << "Destructing " << width << " by " << height << " rectangle.\n"; 
      }  
     int area() { 
          return width * height; 
     } 
};


int main() 
{ 
     Rectangle *p; 

     try { 
         p = new Rectangle(10, 8); 
     } catch (bad_alloc xa) { 
        cout << "Allocation Failure\n"; 
        return 1; 
     } 

     cout << "Area is " << p->area(); 

     delete p; 

     return 0;     
}

Это довольно простой пример C ++. Я скомпилировал в Linux g ++ и запустил его. Внезапно я обнаружил, что delete p не вызывает ~ Rectangle () ... Я должен увидеть строку как "Destructing " << width << " by " << height << " rectangle." но я не ....

а почему? Удаление объекта должно вызвать деструктор этого объекта, не так ли?

1 Ответ

1 голос
/ 26 декабря 2011

Вы не завершили строку, поэтому строка не была выведена. Добавьте << endl к вашей печати. ​​

...