是否在一个typeid中调用函数?考虑下面的代码
#include <iostream> #include <typeinfo> using namespace std; int mul10(int &s) { static int count = 1; cout << "Evaluating call " << count << endl; count++; s *= 10; return(s); } int main() { int i = 5; cout << typeid(mul10(i)).name() << endl; cout << i << endl; return(0); }
所以这里的输出是
int 5
解决方法
typeid的操作数只有在多态类类型的glvalue时才被评估.由于mul10的返回类型(即int)不是多态类类型,所以操作数不被评估,这意味着mul10不被调用.