Деструктор не отображается в C ++ - PullRequest
0 голосов
/ 29 августа 2018
#include<iostream>  
#include<conio.h>  
using namespace std;  
class add  
{  
public:  
add()  
{  
    cout<<"Constructor is WORKING"<< endl;  
}  
void disp()  
{  
    cout<<"Function is Working"<< endl;  
}  
~add()  
{  
    cout<<"Destructor is WORKING"<< endl;  
}  
};  
int main()  
{  
add a;  
a.disp();  
getch();  
}  

Я вижу конструктор и функцию.
Но деструктор не отображается в Visual Studio или Turbo C ++ (я пробовал оба).
Есть ли ошибка в моем коде? или заканчивается без отображения?

Ответы [ 4 ]

0 голосов
/ 29 августа 2018

getch () приостанавливает консоль до нажатия клавиши и возвращает символ для значения нажатой клавиши. так что я думаю, что вы не нажали ни одной клавиши, поэтому основная функция фактически не заканчивается, поэтому не завершено существование >> деструктор не вызывается. Вы можете прочитать о getch () здесь

0 голосов
/ 29 августа 2018

Деструктор не вызывается, пока главные выходы. Попробуйте сделать это:

void test()
{
   add a;  
   a.disp();  
}

int main()  
{
   test();
   getch();  
}  
0 голосов
/ 29 августа 2018

Деструктор (не деконструктор ) будет вызываться в самом конце функции main() - после выполнения getch(). Я предполагаю, что вы вызываете это, чтобы заставить консоль ждать вашего ввода, вместо того, чтобы сразу же закрываться. Проблема в том, что деструктор будет называться после того, как вы нажмете клавишу, что сделает его маловероятным для вас.

0 голосов
/ 29 августа 2018

Деструктор выводит его после getch. Но вы, вероятно, не видите этого, потому что окно закрывается.

Измените свой код на:

int main() {  
    {
        add a;  
        a.disp();  
    }
    getch();  
}  

Чтобы вы могли видеть вывод деструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...