#include <iostream>
class base
{
public:
virtual void print (int a)
{
std::cout << "a: " << a << " base\n";
}
virtual void print (int a, int b)
{
std::cout << "base\n";
}
};
class derived : public base
{
public:
virtual void print (double d)
{
std::cout << "derived\n";
}
};
int main()
{
int i = 10;
double d = 10000.0;
base *b = new derived();
b->print (i, i);
b->print (d);
return 0;
}
这个函数的输出是:什么是虚函数查找规则?
base
a: 10000 base
- 为什么
b->print (d)
不调用派生类的实现和 执行对'd'
静态浇铸为用户提供基类 实现匹配? - 什么规则是虚函数查找在这里应用?
您正在使用类型库,而不是派生。它没有一个函数需要一个double,所以它将转换为int来找到最佳匹配。 – Rob 2011-03-21 00:33:56