怎么输出类中成员函数的内存地址
如何输出类中成员函数的内存地址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流都需要定义函数体,才能正确输出函数地址。