感觉一个有点偏的问题

areegod 2009-11-25 02:18:39
class A
{
public :
virtual void fun(){ cout << "A_fun"<<endl; }
};

class B : public A
{
public :
virtual void fun(){ cout << "B_fun" <<endl;}
};

int main()
{
A *p = new B;
void (A::*fun)(); //定义一个函数指针
fun=&A::fun; //

delete p;

return 0;
}

fun 所指向的地址是多少 可以直接用COUT 输出吗
void (A::*fun)(); 是否可以分解为
A *fun;
void *fun();
...全文
147 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
areegod 2009-11-27
  • 打赏
  • 举报
回复
的确是个偏移量
但是其本质还是地址
areegod 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 do_fork 的回复:]
你得到的不过是个偏移量
[/Quote]
我也是这样认为的 因为都还没实例 不可能有实例地址

那怎样 打印出这个偏移量了 只有打印出这个值才能验证结论是否正确
do_fork 2009-11-26
  • 打赏
  • 举报
回复
你得到的不过是个偏移量
areegod 2009-11-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zgjxwl 的回复:]
是指针可以输出啊。另外。。。那是定义一个成员函数指针。你觉得你分解的等价吗?^_^
[/Quote]
我觉得应该是分解错了
void (A::*fun)() 要怎么理解了
学习态度不够好啊 老喜欢研究不实用的东西
zgjxwl 2009-11-25
  • 打赏
  • 举报
回复
是指针可以输出啊。另外。。。那是定义一个成员函数指针。你觉得你分解的等价吗?^_^
abc25485808 2009-11-25
  • 打赏
  • 举报
回复
void (A::*fun)();
是类A的成员函数指针
fun=&A::fun;
这里让fun指向了类A的fun函数
WingForce 2009-11-25
  • 打赏
  • 举报
回复
void (A::*fun)();
是成员函数指针
具体如何实现取决于编译器
sixbusy 2009-11-25
  • 打赏
  • 举报
回复
不太明白。
void (A::*fun)(); 感觉就是定义了一个只能指向A类的void() 类型的指针,但是它指向哪里呢??
疑问??
jackyjkchen 2009-11-25
  • 打赏
  • 举报
回复
可以用printf输出,参数用%d
jzd8000 2009-11-25
  • 打赏
  • 举报
回复
帮顶!
不可以分解吧。
A *fun;fun是A的对象的指针
void *fun();只是一个普通的函数指针。
bfhtian 2009-11-25
  • 打赏
  • 举报
回复
行不行,试一下就知道了,多在几个编译器下试试
xylicon 2009-11-25
  • 打赏
  • 举报
回复
指针可以直接输出的.
  • 打赏
  • 举报
回复
类成员函数指针,用printf输出的值无意义。
taojy 2009-11-25
  • 打赏
  • 举报
回复
printf("%p\n", fun);

%p是用来专门显示指针的,显示为16进制。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧