c++ - std::future 是否支持多态?

标签 c++ c++11 polymorphism future

c++ 中的 std::future 是否支持多态性? 所以,如果要存储 child_classfuture<parent_class> ,我可以在 dynamic_cast<child_class> 之后得到它吗? ?

最佳答案

如果您使用引用或指针(可能很明显,否则将无法编译)...是。

#include <iostream>
#include <future>
using namespace std;
struct Parent {
    virtual void a() { cout << "I am parent"; }
};
struct Child : Parent {
    virtual void a() { cout << "I am child"; }
};

Child g_c; //just some global for the purposes of the example

int main() {
    std::future<Parent&> p = async(launch::async, []() -> Parent& { return g_c; });
    auto c = dynamic_cast<Child&>(p.get());
    c.a();
    return 0;
}

代码结果在这里:http://ideone.com/4Qmjvc

关于c++ - std::future 是否支持多态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40401331/

相关文章:

java - 如何重载方法来处理 Java 中参数的子类?

c++ - 为什么删除移动构造函数时我的对象没有被复制?

c++ - std::shared_ptr 类工厂 C++

c++ - 如何销毁在堆上创建的 STL 队列?

c++ - 对类构造函数进行单元测试

c++ - 添加参数后“模板参数推导/替换失败”

java - 如何将一个对象转换为同一基类的不同对象?

c++ - 多态类的行为不符合预期

c++ - 将 DLL 中的 C++ 函数导出为 C 时 Debug 和 Release 之间的区别

java - JNI : What signature to use when returning a user defined java class?