<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
-->
</style>
关于C++中函数指针的使用(包含对typedef用法的讨论)
(一)简单的函数指针的应用。
//形式1:返回类型(*函数名)(参数表)
char (*pFun)(int);
char glFun(int a){ return;}
voidmain()
{
pFun = glFun;
pFun(2);
}
第一行定义了一个指针变量pFun。首先我们根据前面提到的“形式1”认识到它是一个指向某种函数的指针,这种函数参数是一个int型,返回值是char类型。只有第一句我们还无法使用这个指针,因为我们还未对它进行赋值。
第二行定义了一个函数glFun()。该函数正好是一个以int为参数返回char的函数。我们要从指针的层次上理解函数——函数的函数名实际上就是一个指针,函数名指向该函数的代码在内存中的首地址
然后就是main()函数了,它的第一句您应该看得懂了——它将函数glFun的地址赋值给变量pFun。
(二)使用typedef更直观更方便。
//形式2:typedef返回类型(*新类型)(参数表)
typedef char (*PTRFUN)(int);
char glFun(int a){ return;}
PTRFUN pFun = glFun;
void main()
{
pFun(2);
}
typedef的功能是定义新的类型。第一句就是定义了一种PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型。后面就可以像使用int,char一样使用PTRFUN了。
第二行的代码便使用这个新类型定义了变量pFun,此时就可以像使用形式1一样使用这个变量了。
三)在C++类中使用函数指针。
//形式3:typedef返回类型(类名::*新类型)(参数表)
class CA
{
public:
char lcFun(int a){ return; }
};
CA ca;
typedef char(CA::*PTRFUN)(int);
PTRFUN pFun;
void main()
{
pFun = CA::lcFun;
ca.pFun(2);
}
在这里,指针的定义与使用都加上了“类限制”或“对象”,用来指明指针指向的函数是那个类的这里的类对象也可以是使用new得到的。比如:
CA *pca = new CA;
pca->pFun(2);
delete pca;
而且这个类对象指针可以是类内部成员变量,你甚至可以使用this指针。比如:
类CA有成员变量PTRFUNm_pfun;
void CA::lcFun2()
{
this->m_pFun(2);
}
一句话,使用类成员函数指针必须有“->*”或“.*”的调用。
分享到:
相关推荐
c++typedef函数指针类型[文].pdf
单片机Keil C51中函数指针的使用,这个东西不错的,至少我觉得不错啊,
理解复杂的CC++声明 const, typedef , 函数指针
于C++中函数指针的使用(包含对typedef用法的讨论)
收集了函数指针_extern_typedef_const_static的基本用法。 拿出来供大家共享
这篇文档介绍了c++中函数指针的如用方法,另外对typedef的用法进行介绍,希望对你能有帮助。。
函数指针的使用,主要用到typedef,其实现功能跟模板类差不多
c++中的函数指针介绍,c++入门知识,详细的介绍了函数指针的定义方法和用法
函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针...
cpp代码-typedef 别名和函数指针别名
c语言函数指针的申请使用,有普通定义以及typedef定义
函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型变、字符型或数组等变量,而函数指针是指向函数。 函数指针可以像一般函数一样,用于调用函数、传递参数。 函数指针变量的声明: ...
1.函数指针 函数指针是一个指针,只是这个指针它不像普通的指针指向是是一个变量,此时它指向的是一个函数,也就是它存储的是一...typedef 返回类型(*函数指针类型名)(函参列表); 代码如下:#include <iostream>us
C++中回调函数及函数指针的实例详解 如何获取到类中函数指针 实现代码: //A类与B类的定义 class A { public: void Test() { cout << A::Test() << endl; } }; class B : public A { public: void...
讲友元之前先讲普通的成员函数的函数指针 <code class=sourceCode>class Std_interface { public: virtual void suspend() = 0; }; // define the pointer of function typedef void (Std_...
C语言中typedef的用法以及函数指针
篇一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。...