-The debit account function misses a }
-The inspector functions could (should?) be made inline. The compiler might do this for you, but you can newer be to sure. (If you put the definition of the function outside the class it will not be inlined by the compiler... In most cases)
-You should have a virtual destructor. This is for inheritance reasons.
-Missing default constructor. This is not neaded, but something I usually have anyway. The compiler migth create this for you, but then again: don't be to sure about it. You could do like this also, to have an default constructor, kind of thing:
-Since I think the mutator functions doesn't do more than just setting the value, these should be inlined to.
StudentAccount(string ID = "default", string name = "default", double init = 0.0);
-I would go for more OOP when I'm at it. Create a baseAccount class. Let Student account inherit from baseAccount. Then you could make an TeacherAccount the same way. without any extra work.
class StudentAccount: public BaseAccount
class TeacherAccount: public BaseAccount