首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么输出类中成员函数的内存地址

2012-04-25 
如何输出类中成员函数的内存地址C/C++ code#includeiostreamusing namespace stdclass A{public:void p

如何输出类中成员函数的内存地址

C/C++ code
#include<iostream>using namespace std;class A{public:    void print()    {        cout<<"OK"<<endl;    }    void print2()    {        cout<<"YES"<<endl;    }private:    int a;    int b;};void main(){    A a;    cout<<a.print<<endl;}

请问这个程序为什么输出结果是1
而不是print函数在内存中的地址呢

函数名不是代表函数的首地址么,如果这样不行,哪该怎么写可以输出成员函数的内存地址


[解决办法]
猥琐的方法.
cout<<(void *)(&a::print)<<endl;

[解决办法]
你这代码也能编译通过不报错吗..
[解决办法]
楼主的代码和1楼的代码都是不合语法的.通过的编译器都是不合标准的.
(void *)(&A::print) 成员指针不能转换成普通的指针.
std::cout<<a.print //成员函数只能用来调用函数.



[解决办法]
《C++ Common Knowledge》第16章有介绍。
[解决办法]
C++中ostream的实现里定义对于函数指针的地址为true,所以cout输出为1,无论改函数有没有定义: 
void f(); //只有申明 
... 
int main(){ 
cout << f; //输出1 


如果用printf的话就需要定义函数,才能输出地址。 
void f(){} 
... 
int main(){ 
printf("%d",f); 


vc6里无论是printf还是cout流都需要定义函数体,才能正确输出函数地址。

热点排行