C++ 为什么静态#u cast不';t强制转换到已初始化的类
我想使用C++ 为什么静态#u cast不';t强制转换到已初始化的类,c++,casting,static-cast,C++,Casting,Static Cast,我想使用static\u cast将数据转换为类实例。奇怪的是,它总是强制转换到基类,而不是初始化的子类。下面是示例代码: #include <iostream> using namespace std; class A { public: void Display () { fprintf(stderr, "I am A\n"); } }; class B : public A { public: void Display () {
static\u cast
将数据转换为类实例。奇怪的是,它总是强制转换到基类,而不是初始化的子类。下面是示例代码:
#include <iostream>
using namespace std;
class A
{
public:
void Display () {
fprintf(stderr, "I am A\n");
}
};
class B : public A
{
public:
void Display () {
fprintf(stderr, "I am B\n");
}
};
int main()
{
B *b=new B();
b->Display(); //Invokes subclass function
A *a=static_cast<A*>(b);
a->Display(); //Invokes baseclass function
}
预期产出:
I am B
I am B
你想使用
virtual
方法。啊。。!工作非常感谢:)顺便说一句,你不需要演员阵容。@PeteBecker,是的,我知道,这只是更大代码的一小部分。为了简化我的问题,我已经这样做了。
I am B
I am B