c/c++ 问题

[复制链接]
查看11 | 回复5 | 2011-5-4 15:30:58 | 显示全部楼层 |阅读模式
已知fun(int)是类Test的公有成员函数,p是指向成员函数fun()的指针,采用( )是正确的。 A. p=fun;
B. p=Test::fun();
C. p=fun();
D. p=Test::fun;
选哪个,然后解释一下 谢谢

回复

使用道具 举报

千问 | 2011-5-4 15:30:58 | 显示全部楼层
选D吧首先fun是类Test的成员函数,因此在使用时需要加上类名;否则当类外有同名的fun函数的时候,p将指向类外的fun函数。其次,fun的函数名代表的是函数的首地址,用首地址赋值给指针变量是对的。如果像B那样的话,是缺少实参的函数调用。
回复

使用道具 举报

千问 | 2011-5-4 15:30:58 | 显示全部楼层
选Ap=fun;fun代表的函数地址,而p正好是一个函数指针因为fun()是Test的成员函数,不是静态成员函数,所以Test::fun() 是不对的,因为用Test的类对象来调用fun()函数p=fun(); 错误是因为p在这里得到的fun();函数的返回值,而不是fun()函数的地址
回复

使用道具 举报

千问 | 2011-5-4 15:30:58 | 显示全部楼层
D函数指针其实就是符号名称,直接赋值即可;同时,使用类的成员函数时需要注意作用域,往往用类名::来进行限定。
回复

使用道具 举报

千问 | 2011-5-4 15:30:58 | 显示全部楼层
D. 函数名就是函数的指针.成员函数的应该完整表达,即类名::函数名.所以选D
回复

使用道具 举报

千问 | 2011-5-4 15:30:58 | 显示全部楼层
D. p=Test::fun
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行