#include<iostream>
using namespace std;
class A{
public:
virtual int f(int a){
cout<<a<<endl;
}
};
int main(){
A a;
int (A::*f1)(int)=&A::f;//或&a.f,普通成员函数&A::f可以得到函数的内存地址
(a.*f1)(1);
//auto 简洁
auto f2=&a.f;
(a.*f2)(2);
//typedef
typedef int (A::*Func)(int);
Func f3=&A::f;
(a.*f3)(3);
//using
using Funcc=int (A::*)(int);
Funcc f4=&A::f;
(a.*f4)(4);
// decltype
decltype(A::f) f5=&A::f;
(a.*f5)(5);
}
那么编译器如何区分一个函数指针指向的是虚函数还是普通函数呢?