Инициализация класса;Вместо передачи требуемого класса в качестве аргумента передайте базовый класс этого ожидаемого класса - PullRequest
0 голосов
/ 23 февраля 2012

Я столкнулся с делом, описанным ниже, и хочу понять, как это работает.У меня есть класс, конструктор которого ожидает другой класс в качестве аргумента.Затем в коде вместо передачи объекта ожидаемого класса в качестве аргумента я вижу объект другого класса (этот класс является базовым для ожидаемого класса).

добавление реального кода:

class s_api {
public:
};

class PB {
public:
    PB ( s_api *sa ) {}
};

class TValue : public s_api {
public:
    TValue () {}
};

int main() {
    TValue tvl;
    PB pb(tvl); //tvl is object of class TValue
}

Как это работает)?

1 Ответ

1 голос
/ 23 февраля 2012

Это основа полиморфизма. Если у вас есть что-то, что ожидает s_api * (то есть указатель на базовый класс), вы можете свободно передавать Tvalue * (то есть указатель на производный класс).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...