tôi đã xác định một số chức năng và tôi in địa chỉ của họ như thế này:C++ con trỏ đến chức năng không thay đổi
#include<iostream>
#include <string>
using std::cout;
std::string func()
{
return "hello world\n";
}
int func2(int n)
{
if (n==0)
{
cout << func2 << std::endl;
return 1;
}
cout << func2 << std::endl;
return n + func2(n - 1);
}
//================================================
int main()
{
int (*fun)(int) = func2;
cout << fun;
cout << std::endl << func2(3);
}
Khi tôi in tên của function (địa chỉ) tất cả đều in 1
trên trình biên dịch của tôi (MinGW gcc 4.8) .
Có OK hay không?
Giả sử rằng kích thước của một con trỏ hàm không lớn hơn kích thước của 'unsigned long long int'. Bạn cũng nên thêm 'const' vào dàn diễn viên để ngăn ngừa tai nạn. –
Vâng, vâng ... trong C++ 11 dài lâu dài ít nhất 64 bit. – juzzlin
Vì vậy? Điều gì xảy ra nếu con trỏ là 128 bit trong tương lai? Một khi họ chỉ có 16 bit. –