Я знаю, что это может быть глупо, но я даже не знаю, как назвать этот вопрос. Я не родной английский. Я изучаю C++ из книги, и есть программа, которая показывает имя и уровень оплаты труда сотрудника (базовый класс) и Manager
(производный класс) с добавленной переменной bool
salaried
. Вот исходный код:Производный класс C++
//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;
}
Может кто-нибудь объяснить мне, почему эта часть
:Employee(name, payRate)
должен быть добавлен в код, чтобы работать должным образом?
Это просто вызывает 'конструктор Employee' в – DimChtz
Это способ вызова параметризованного конструктора Работника. По умолчанию используется конструктор по умолчанию базового класса, но нужно вызвать параметризованный конструктор explicitliy. – user1336087