我正在尝试使用 C++ 来了解类/结构及其各自的对象如何在内存中布局,并且我了解类/结构的每个字段都是它们各自对象的偏移量(因此我可以拥有一个成员变量指针)。
我不明白为什么,即使我可以拥有成员函数指针,以下代码也不起作用:
struct mystruct
{
void function()
{
cout << "hello world";
}
int c;
};
int main()
{
unsigned int offset_from_start_structure = (unsigned int)(&((mystruct*)0)->c);
unsigned int offset_from_start_structure2 = (unsigned int)(&((mystruct*)0)->function); // ERROR - error C2276: '&' : illegal operation on bound member function expression
return 0;
}
我的问题是:为什么这条线
unsigned int offset_from_start_structure = (unsigned int)(&((mystruct*)0)->c);
编译并返回我从结构和行开始的“c”字段的偏移量
unsigned int offset_from_start_structure2 = (unsigned int)(&((mystruct*)0)->function);
甚至不编译?