You should really use std::string for strings until you understand more about pointers and memory management. Things you're doing wrong:
1) don't delete something unless you allocated it with new
2) arrays (as in char arrays) would generally be deleted with delete[], not delete.
3) Don't set values to NULL before deleting them, since that makes it impossible to delete them.
But anyway... yeah... use std::string and you don't have to worry about any of that.
------------------------------------------
As for your actual question:
That is a rather strange function. Are you sure it's not supposed to be float Person::get_salary()? In that case, it'd just return salary;
Wtf? That is the most useless function I have ever seen, it defeats the entire point of having a private variable by letting you modify it however you want. If you are going to have a function like that, just make it public.