类函数名转成int解决方法

类函数名转成int
请问,
class CTest
{
public:
void Fun()
{
int ps = (int)Fun;
}
};

这样编译器会报错,但是如果把函数写成static就不会,
class CTest
{
public:
static void Fun()
{
int ps = (int)Fun;
}
};

我大概猜到是类型转换不一样,但是具体原因是什么就不明白

------解决方案--------------------
是因为非静态类成员函数不存在隐式指针转换,而静态成员函数的类型是普通函数类型,存在隐式指针转换。
------解决方案--------------------
探讨

引用:
是因为非静态类成员函数不存在隐式指针转换,而静态成员函数的类型是普通函数类型,存在隐式指针转换。

补充一下,就算用&运算对成员函数做取地址操作,得到的成员函数指针依然是不可以转换成int类型的.

(int)&Test::fun;//erro