【发布时间】:2012-08-13 23:09:23
【问题描述】:
指针不就是地址吗?还是我遗漏了什么?
我测试了几种类型的指针:
- 指向任何变量的指针都是相同的(在我的平台上为 8B)
- 指向函数的指针与指向变量的指针大小相同(再次为 8B)
- 指向具有不同参数的函数的指针 - 仍然相同 (8B)
但指向成员函数的指针更大 - 在我的平台上为 16B。
三件事:
- 为什么指向成员函数的指针更大?他们还需要什么信息?
- 据我所知,标准 没有说明指针的大小,除了
void*必须能够“包含”任何指针类型。换句话说,任何指针都必须能够转换为void*,对吧?如果是这样,那为什么sizeof( void* )是8,而sizeof指向成员函数的指针是16? - 是否还有其他大小不同的指针示例(我的意思是,对于标准平台,而不是一些稀有和特殊的平台)?
【问题讨论】:
-
本质上,该标准并不要求数据指针、函数指针和成员函数指针都具有相同的大小。如果您想知道为什么它们在您的平台上的大小不同,您必须询问 C++ 编译器的维护人员。 parashift.com/c++-faq/cant-cvt-memfnptr-to-voidptr.htmlparashift.com/c++-faq/cant-cvt-fnptr-to-voidptr.html
-
@KirilKirov 没问题。我并不总是讽刺:)
标签: c++ pointers function-pointers member-function-pointers