hun*_*y91 1 c++ virtual static-cast
在下面的代码中,由于name()是虚拟的,我希望将调用派生结构的方法.相反,什么是写出来的是"A".为什么?
#include <iostream>
using namespace std;
struct A {
virtual string name() { return "A"; }
};
struct B : A {
string name() { return "B"; }
};
int main (int argc, char *argv[]) {
B b;
cout << static_cast<A>(b).name() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
static_cast<A>(b)创建一个由... A构造的类型的临时变量b.所以呼唤name()确实要求A::name().
为了观察您可能会做的多态行为
static_cast<A&>(b).name()
Run Code Online (Sandbox Code Playgroud)