Dường như std::cout
không thể in địa chỉ hàm thành viên của, ví dụ:Làm thế nào để in địa chỉ hàm thành viên trong C++
#include <iostream>
using std::cout;
using std::endl;
class TestClass
{
void MyFunc(void);
public:
void PrintMyFuncAddress(void);
};
void TestClass::MyFunc(void)
{
return;
}
void TestClass::PrintMyFuncAddress(void)
{
printf("%p\n", &TestClass::MyFunc);
cout << &TestClass::MyFunc << endl;
}
int main(void)
{
TestClass a;
a.PrintMyFuncAddress();
return EXIT_SUCCESS;
}
kết quả là một cái gì đó như thế này:
003111DB
1
Làm thế nào tôi có thể In MyFunc
's địa chỉ bằng cách sử dụng std::cout
?
Đối với một số thống kê thú vị về kích cỡ và triển khai của con trỏ-to-viên-chức năng trong khác nhau trình biên dịch, xem biểu đồ gần cuối [bài viết này] (http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible). Tuy nhiên, kể từ khi bài viết đó có phần ngày tháng (viết năm 2005), các con số có thể không còn chính xác nữa, nhưng chúng đưa ra một ý tưởng thô. –