合罗山农业网

首页 > 正文

C++中普通函数指针与类成员函数指针的异同

www.ighdhair.com2020-03-05

文章目录函数指针公共函数指针成员函数指针(键

函数指针)

像公共指针一样,函数指针也是指针,但不同的是函数指针指向的不是类型而是函数地址。函数指针通过指向函数的指针间接调用函数。我相信许多人使用更多的函数指针指向一般函数,但是不熟悉指向类成员函数的函数指针。

公共函数指针

我们通常所说的函数指针是指指向一个公共函数的指针。像其他指针一样,函数指针指向特定的类型。

同一指针使用的所有函数必须具有相同的参数类型和返回类型。

这里,pf指的是函数类型,也就是说,函数的参数是两个int类型,返回值也是int类型。

注意:pf两端的括号是必不可少的。如果不写这些括号,pf是一个返回值为。

让我们看一个例子:

例如,直接声明函数指针变量既繁琐又乏味,所以我们可以定义自己的函数指针类型。

同时,我有一个奇怪的观点,那就是,当我们:

为什么会是这样?

在查找数据后,我发现这是一种省略的书写方式,它是这样的:

让我画一个图来解释:

这是

这是下面的情况:

Member Function Point(Key)

Member Function Point)

指的是可以指向类的非静态成员函数的指针。类的静态成员不属于任何对象,因此不需要指向静态成员的特殊指针。指向静态成员的指针与普通指针没有什么不同。

与普通函数指针不同,

成员函数指针不仅必须指定目标函数的参数列表和返回类型,* *还必须指定成员函数所属的类。* *因此,我们必须在*之前添加,以指示当前定义的指针所指向的成员功能树,如下所示:

同样,这里两端的括号也很重要。如果没有这样的括号,pf是一个返回A类数据成员(int类型)指针的函数。

注意:与普通函数指针不同,成员函数和指向该成员的指针之间没有自动转换规则。

pf=A:add//正确:您必须明确使用地址运算符()

pf=A:add//Error

当我们初始化一个成员函数指针时,它指向类的一个成员函数,但不指定该成员所属的对象在使用该成员函数指针之前,不会提供该成员所属的对象。

下面是一个使用成员函数指针的例子:

如例子所示,我们可以使用定义成员函数指针的类型别名。

此外,我们需要注意如何使用函数指针:

对于普通的函数指针,这是使用它的方法,因为要调用一个函数,必须首先取消对函数指针的引用,并且函数调用运算符()具有更高的优先级,所以括号是必要的。

对于成员函数指针,唯一的区别是您需要调用一个对象上的函数,所以您只需要添加一个成员访问器:

(结束)

热门浏览
热门排行榜
热门标签
日期归档