std::future 是否支持多态?
Does std::future support polymorphism?
c++中的std::future支持多态吗?
那么,如果将 child_class
存储在 future<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支持多态吗?
那么,如果将 child_class
存储在 future<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