下面是函数指针的一些例子:
#include <iostream>
void print(inti)
{ std::cout << i << std::endl; }
void print_2(inti)
{ std::cout << i << std::endl; }
void multiply( int & nDest, intnBy)
{ nDest *= nBy; }
void print_something()
{ std::cout << "something" << std::endl; }
int return_1()
{ return 1; }
int main()
{
void (*func_1)(int);
func_1 = &print;
func_1( 1);
//或者,我们这一这样调用它
//(由于它是一个指针,所以它可以重引用)
(*func_1)( 1);
func_1 = &print_2;
func_1( 1);
void (*func_2)(int) = &print_2;
func_2( 1);
void (*func_3)(int&, int) = &multiply;
inti = 1;
std::cout << "[before] i=" <<
i << std::endl;
(*func_3)( i, 10);
std::cout << "[after] i="
<< i << std::endl;
void (*func_4)();
func_4 = &print_something;
func_4();
int (*func_5)();
//注意:有些编译器可以让你写成
// “func_5 = return_1;”(即忽略了‘&’);
//但是,我们不推荐这种写法;
//下面的用法就揭示了这样一个事实:
//‘func_5’是一个指针,如果你忽略了‘&’
// 代码的含义就不够清晰
func_5 = &return_1;
std::cout << (*func_5)() << std::endl;
std::cin.get();
return 0;
}