#include <iostream>
using namespace std;
class Base
{
public:
Base(){};
~Base(void){};
void print(){};
void address1(){};
void address2(){};
public:
int *aa;
int iBase;
};
void (Base::*pf1) ();
void (Base::*pf2) ();
int main(int argc, const char * argv[]) {
Base *b = new Base();
cout << "对象地址:" << b << endl;
cout << "成员*aa: "<< &b->iBase << endl;
cout << "成员iBase: "<< &b->aa << endl;
pf1 = &Base::address1;
pf2 = &Base::address2;
cout << "pf1:" << &pf1 << endl;
cout << "pf2:" << &pf2 << endl;
printf("pf1:%p \n", pf1);
printf("pf2:%p \n", pf2);
return 0;
}
打印结果:
对象地址:0x100105470
成员*aa: 0x100105478
成员iBase: 0x100105470
pf1:0x1000020e8
pf2:0x1000020f8
pf1:0x100000d20
pf2:0x100000d30
测试环境:mac 64位系统 应该跟 windows 64位效果差不多吧
1.这种打印 c++ 函数的地址方式对吗?
2.对象地址:0x100105470 和 成员iBase: 0x100105470 地址相同?
3.pf1:0x1000020e8 与 pf1:0x100000d20 这两个哪个才是这正的函数地址?
4.pf1:0x1000020e8 与 pf2:0x1000020f8 这两个地址差别怎么理解
5.0x100105470 这个地址怎么理解啊
0x代表16进制 后面的呢 1001 0547 0 怎么是 9 位啊 应该是 8位啊 “1”是符号位?
问题有点多谢谢各位大哥