Assuming you've swapped the parameters in strcpy as shacktar pointed out, the only other issue(s) I see is..
1 2 3
public:
Employee( int initId=0, char initName[]=0, ... // Bad! initName is a null pointer.
Employee( int initId=0, char initName[]="", ... // Good, initName is an empty string.
char getName() {return name[21];}.
You may be trying to return the name here, though it won't work like that. You are actually returning a character at the 21st position of name.. and since name is an array of 21 characters with an index ranging from 0-20, this will cause a run time error.
I think what you want is, constchar* getName() {return name;}
Although if you want a copy of name returned, you'll need to fiddle with dynamic memory.
I've tested your code on ideone with no apparent issues, see:- http://ideone.com/BwfpN.
ps. Added const to your char array parameters, as the compiler was complaining, and rightly so. I'd also recommend you read about arrays and pointers:-