Вызов переопределенного метода дочернего класса методом родительского

Скажите как сделать так, чтобы вызов родительского метода из дочернего вызывал переопределенный метод, а не родительский?

#include <iostream>
#include <string>

using namespace std;


class user {
    private:
    string name;
    string pass;
    public:
    string getstatus()
    {
        return ("USER\n");
    }
    void print()
    {
        cout << getstatus();
    }
};

class suser : public user {
    public:
    string getstatus()
    {
        return ("SUPERUSER\n");
    }
};

int main()
{
    user a;
    suser b;
    
    a.print();
    b.print();
}

Результат этой программы:

USER
USER

Желаемый результат:

USER
SUPER USER

Ответы (1 шт):

Автор решения: Mira

Правильно будет так (вы должны явно переопределить метод):

#include <iostream>
#include <string>

using namespace std;


class user {
    private:
    string name;
    string pass;
    public:
    string virtual getstatus()
    {
        return ("USER\n");
    }
    void print()
    {
        cout << getstatus();
    }
};

class suser : public user {
    public:
    
    
    string getstatus() override
    {
        return ("SUPERUSER\n");
    }
};

int main()
{
    user a;
    suser b;
    
    a.print();
    b.print();
}
→ Ссылка