gpt4 book ai didi

c++ - 关于多态性,引用和指针是否相等?

转载 作者:IT老高 更新时间:2023-10-28 14:02:06 27 4
gpt4 key购买 nike

我一直认为必须使用指针来实现多态性。使用规范示例:

DrawEngine::render(Shape *shape)
{
shape->draw();
shape->visible(true);
}

并传入指向各种 Shape 派生类的指针。它与引用相同吗?

DrawEngine::render(Shape &shape)
{
shape.draw();
shape.visible(true);
}

这样做是否有效:

engine.render(myTriangle); // myTriangle instance of class derived from Shape

如果可行,这两种情况有什么区别吗?我试图在 Stroustrup 中查找信息,但一无所获。

我重新打开它是因为我想进一步探索。

所以至少有一个区别是dynamic_cast。对我来说,多态性包括使用 dynamic_cast。

我可以去吗

Rhomboid & r = dynamic_cast<Rhomboid &>(shape);

如果转换失败会发生什么?这有什么不同吗?

Rhomboid * r = dynamic_cast<Rhomboid*>(&shape);

最佳答案

关于多态性,引用就像指针一样工作。

关于c++ - 关于多态性,引用和指针是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com