jeudi 27 avril 2017

The method is not getting overridden?

class People {
    public:
        People(string name);
        void setName(string name);
        string getName();
        void setAge(int age);
        int getAge();
        virtual void do_work(int x);
        void setScore(double score);
        double getScore();
    protected:
        string name;
        int age;
        double score;
};

class Student: public People {
    public:
        Student(string name);
        virtual void do_work(int x);
};

class Instructor: public People {
    public:
        Instructor(string name);
        virtual void do_work(int x);
};

People::People(string name) {
    this->name = name;
    this->age = rand()%100;
}

void People::setName(string name) {
    this->name = name;
}

string People::getName() {
    return this->name;
}


void People::setAge(int age) {
    this->age = age;
}

int People::getAge() {
    return this->age;
}

void People::setScore(double score) {
    this->score = score;
}

double People::getScore() {
    return this->score;
}

void People::do_work(int x) {

}

Student::Student(string name):People(name){
    this->score = 4 * ( (double)rand() / (double)RAND_MAX );
}

void Student::do_work(int x) {
    srand(x);
    int hours = rand()%13;
    cout << getName() << " did " << hours << " hours of homework" << endl;
}

Instructor::Instructor(string name): People(name) {
   this->score = 5 * ( (double)rand() / (double)RAND_MAX );
}

void Instructor::do_work(int x) {
    srand(x);
    int hours = rand()%13;
    cout << "Instructor " << getName() << " graded papers for " << hours << " hours " << endl;
}

int main() {
    Student student1("Don");
    Instructor instructor1("Mike");
    People t(student1);
    t.do_work(2);
}

Why the do_work class is not getting overridden ? There is a people class and the Instructor and Student class are inheriting those classes. There is a virtual method in People class, which is implemented in Student and Instructor. But it is not getting overridden ? Thanks in advance !

Aucun commentaire:

Enregistrer un commentaire