gpt4 book ai didi

C++如何使虚函数返回任何类型的指针?

转载 作者:行者123 更新时间:2023-11-30 04:58:40 24 4
gpt4 key购买 nike

假设我有一个类(foo),它有一个整数和一个字符。我希望能够用从文件加载的信息填充此数据,因此我添加了一个加载函数,该函数将 foo 的一个成员变量(基于 ID)的指针返回到一个对象,然后将其设置为加载的值从文件中。在这种情况下我可以使用自动返回类型,但我希望该函数是虚拟的,以便被剥夺的类可以在它们有更多变量的情况下使用不同的 ID。我知道我可以使用 void 指针,但我希望避免使用它。

最佳答案

这不是 virtual 的好用例, 因为你调用 virtual通过带有参数和返回类型的基类指针作为成员,它根据运行时派生实例的类型工作。 virtual成员不能返回一大堆不同的东西,甚至不能以不同的方式被调用。这些是具有静态分派(dispatch)的不同重载函数。

如果你需要一堆不同的成员来获取和返回 char , int或其他类型,您希望将它们编写为单独的重载函数,或者可能作为非 virtual模板,例如 template <typename T> T* foo::bar(const T&); .

如果您需要返回一个可以指向任何类型对象的指针,那么它应该是指向它们的公共(public)基类的指针。如果真的没有,语言规则允许你使用 void*。指向任何类型的对象指针,但(如您所说)这是一种代码味道。

关于C++如何使虚函数返回任何类型的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604172/

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