#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