初始化一个类;不是将所需的类作为参数传递,而是传递该期望类的基类

时间:2012-02-23 00:56:05

标签: c++ oop class inheritance

我遇到了如下所述的案例,并希望了解其工作原理。我有一个类,其构造函数期望另一个类作为参数。然后在代码中我看到的不是将期望的类'对象作为参数传递,而是传递另一个类'对象(此类恰好是期望类的基类)。

添加真实代码:

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 个答案:

答案 0 :(得分:1)

这是多态性的基础。无论你有什么东西需要s_api *(即指向基类的指针),你都可以自由地传递Tvalue *(即指向派生类的指针)。