I know that it can be a stupid but I even don't know how to name this question. I'm non native English. I learn C++ from a book and there is a program which shows name and pay rate of employee (base class) and Manager (derived class) with added bool variable salaried. Here is the source code:
//base class
class Employee {
private:
    string name;
    double pay;
public:
    Employee() {
        name = "";
        pay = 0;
    }
    Employee(string empName, double payRate) {
        name = empName;
        pay = payRate;
    }
    string getName() const {
        return name;
    }
    void setName(string empName) {
        name = empName;
    }
    double getPay() const {
        return pay;
    }
    void setPay(double payRate) {
        pay = payRate;
    }
    string toString() {
        stringstream stm;
        stm << name << ": " << pay;
        return stm.str();
    }
};
//derived class
class Manager : public Employee {
private:
    bool salaried;
public:
    Manager(string name, double payRate, bool isSalaried)
        :Employee(name, payRate)
    {
        salaried = isSalaried;
    }
    bool getSalaried() {
        return salaried;
    }
};
int main()
{
    Employee emp1("Mary Smith", 15.00);
    cout << "Employee name: " << emp1.getName() << endl;
    cout << "Employee pay rate: " << emp1.getPay() << endl;
    Manager emp2("Bob Brown", 1500, true);
    cout << "Employee name: " << emp2.getName() << endl;
    cout << "Employee pay rate: " << emp2.getPay() << endl;
    cout << "Is Salaried: " << emp2.getSalaried() << endl;
    return 0;
}
Can someone explain me why this part
:Employee(name, payRate)
must be added to code to work properly?
 
     
     
     
     
     
    