Nothing wrong with it, but you have extra blank lines thet you do not need.
What you are calling the default ctor is a good idea, but wrong. You have:
1 2 3 4 5 6
Employee()//constructor with default setting
{
name=name;
rate=rate;
hours= hours;
}
Line 3 will not hurt anything you are setting an empty string equal to its self. But rate and hours have no value to begin with, so you are actually garbage equal to garbage since the variables have not value to start with.
The string is empty to start with and does not need to be given an value unless you want to. "rate" and "hours" being "double"s do need to be given a value.
The overloaded ctor is half right it should be more like:
And the private variables of the class would start with "m_", which is what I see quite often, or you could change or do something different with the function parameters so that they are different from your private variable names. Sorry I had a brain freeze with what to do with the function parameters for the variables.