因此,基於下面的評論,我想確認這個代碼是非法的,原因包括:多態性和純虛函數
- 我們已經創建了一個對象喬從抽象類員工
- 由於PrintCheck可()沒有定義,它使HourlyEmployee像Employee一樣是一個抽象類。因此,我們從抽象類中創建了對象joe。
?
class Employee
{
public:
Employee();
Employee(const string& theName, const string& theSsn);
string getName() const;
string getSsn() const;
double getNetPay() const;
void setName(const string& newName);
void setSsn(const string& newSsn);
void setNetPay(double newNetPay);
virtual void printCheck() const = 0;
private:
string name;
string ssn;
double netPay;
};
class HourlyEmployee : public Employee
{
public:
HourlyEmployee();
//<Some more legal member function definitions, none of which are
//pure virtual functions.>
private:
double wageRate;
double hours;
};
int main()
{
Employee joe;
joe = HourlyEmployee();
}
不,這是不合法的,它不會編譯。 – Angew
唉!縮進! – StoryTeller
@DimaRudnik更好嗎? – Angew