为什么不打印"双倍"?寻找详细的解释.谢谢你的时间!
#include<iostream.h>
using namespace std;
class B{
public:
virtual int ft(int i) { cout <<"int"; return 0;}
};
class D: public B {
public:
double ft(double i){cout << "doub"; return 0.0;}
int ft(int i) { cout <<"intdoub"; return 0;}
};
int main(){
B *pB = new D;
pB->ft(2.3);
}
Run Code Online (Sandbox Code Playgroud)
o/p是'intdoub'
变量pB属于类型,仅仅B*知道函数.该转换值来自动发生,但你应该得到一个编译器警告.double D::ft(double)virtual int B::ft(int)double2.3int
尝试:
dynamic_cast<D*>(pB)->ft(2.3);
dynamic_cast<D*>(pB)->B::ft(2.3);
Run Code Online (Sandbox Code Playgroud)