C++ 类的成员函数指针 ( function bind )

类的成员函数指针是指向类的成员函数的指针,可以通过它们来调用类的成员函数。在C++中,类的成员函数指针和普通函数指针有一些不同之处。

定义类的成员函数指针的语法如下:

```cpp

返回类型 (类::*指针名称)(参数列表) = &类::成员函数;

```

其中,`返回类型`是成员函数的返回类型,`类::*`表示这是一个类的成员函数指针,`指针名称`是指针的名称,`参数列表`是成员函数的参数列表,`&类::成员函数`表示取得成员函数的地址。

使用类的成员函数指针可以通过两种方式来调用成员函数:使用对象或者使用指针。

使用对象调用成员函数:

```cpp

类 对象;

(对象.*指针名称)(参数列表);

```

使用指针调用成员函数:

```cpp

类* 指针 = new 类();

(指针->*指针名称)(参数列表);

```

下面是一个示例,通过类的成员函数指针来调用成员函数:

```cpp

#include

using namespace std;

class MyClass {

public:

void printHello() {

cout << "Hello, world!" << endl;

}

};

int main() {

MyClass obj;

void (MyClass::*ptr)() = &MyClass::printHello;

(obj.*ptr)();

MyClass* ptrObj = new MyClass();

(ptrObj->*ptr)();

delete ptrObj;

return 0;

}

```

输出结果为:

```

Hello, world!

Hello, world!

```

除了直接使用成员函数指针外,C++11提供了`std::bind`函数,它可以绑定成员函数指针和对象,并创建一个可调用对象。这个可调用对象可以像普通函数一样被调用。

使用`std::bind`绑定成员函数指针的语法如下:

```cpp

std::bind(&类::成员函数, 对象, 占位符参数列表)

```

其中,`&类::成员函数`是成员函数的指针,`对象`是对象的名称或指针,`占位符参数列表`是占位符`_1`、`_2`等的参数列表。

下面是一个示例,使用`std::bind`绑定成员函数指针并调用成员函数:

```cpp

#include

#include

using namespace std;

class MyClass {

public:

void printHello() {

cout << "Hello, world!" << endl;

}

};

int main() {

MyClass obj;

auto bindObj = bind(&MyClass::printHello, obj);

bindObj();

MyClass* ptrObj = new MyClass();

auto bindPtrObj = bind(&MyClass::printHello, ptrObj);

bindPtrObj();

delete ptrObj;

return 0;

}

```

输出结果为:

```

Hello, world!

Hello, world!

```

通过`std::bind`可以更方便地绑定成员函数指针和对象,使用起来更加灵活。

总结来说,C++类的成员函数指针可以通过对象或指针来调用成员函数,可以使用`std::bind`来绑定成员函数指针和对象,并创建可调用对象。这使得在C++中,对类的成员函数进行函数指针操作更加方便和灵活。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(21) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部