gpt4 book ai didi

c++ - 直接type cast derived到基类调用重载函数

转载 作者:行者123 更新时间:2023-11-30 00:48:15 25 4
gpt4 key购买 nike

在我的代码中,我很自然地先将派生结构类型转换为基结构以调用重载函数,后来意识到这在某些情况下可能会导致问题(尽管老实说我不不知道是否和哪个)。

我的代码如下:

struct Base
{
//some variables
}

struct Derived : Base
{
//some more variables
}

bool func(const Base &base1, const Base &base2)
{
//do some stuff and return true or false
}
bool func(const Base &base, const Derived &derived)
{
if(func(base, (Base)derived))
return true;
else
//do some more stuff and return true or false
}

代码编译并且函数按预期工作。

我在 SO 和其他地方发现了大量关于向上和向下转型的问题,但它们都涉及使用指针而不是直接对基类进行类型转换。在 this然而,直接将人链接到派生类而不是基类。我发现没有任何问题可以直接解决这个问题,但我可能根本不知道要查找什么,所以在这种情况下请指出正确的方向!

我假设(并已在线阅读)类型转换涉及创建拷贝,因此 (Base)derived 不会简单地返回对 derived 的引用,而是使用第一个功能。我可能会遇到任何其他缺点或问题吗?

最佳答案

使用 static_cast<const Base&>(derived)而不是 (Base)derived .它将转发引用,并纠正重载决议。

关于c++ - 直接type cast derived到基类调用重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32161524/

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