我遇到了如下所述的案例,并希望了解其工作原理。我有一个类,其构造函数期望另一个类作为参数。然后在代码中我看到的不是将期望的类'对象作为参数传递,而是传递另一个类'对象(此类恰好是期望类的基类)。
添加真实代码:
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
}
这是如何工作的??
答案 0 :(得分:1)
这是多态性的基础。无论你有什么东西需要s_api *
(即指向基类的指针),你都可以自由地传递Tvalue *
(即指向派生类的指针)。