The pointer *sbi memory is freed using the delete operator but still the code executes correctly without providing garbage value. is the constructor re-initializing or is the a fault in code/
#include <iostream>
using namespace std;
class bank
{
private:
    int balance;
public:
    bank();
    void dep(int x);
    void with();
    ~bank();
};
int main()
{
    bank *sbi;
    sbi = new bank;
    sbi->dep(50000);
    delete sbi;   /// problem is in this section of code 
    sbi->with();
    return 0;
}
bank :: bank()
{
    balance=0;
}
void bank::dep(int x)
{
    balance=x;
}
void bank::with()
{
    cout<<balance<<endl;
}
bank::~bank()
{
    cout<<"destroy"<<endl;
}
 
     
    