类成员函数做函数指针
时间: 2023-10-12 22:01:03 浏览: 118
回答: 类成员函数指针是指向类的非静态成员函数的指针。在使用类成员函数指针时,需要使用类对象或者指针来调用指针所指的成员函数。这是因为非静态的成员函数必须被绑定到一个类的对象或者指针上,才能得到被调用对象的this指针,然后才能调用指针所指的成员函数。在C语言中,直接使用类成员函数指针会报错,需要注意使用方法的区别。类成员函数指针是有真正的内存地址的,这个地址一般跟具体的类对象没有什么关系,因为类被需要的时候会被载入内存,类成员函数也会被载入内存。下面是一个示例代码,演示了类成员函数指针的使用方法:
```cpp
#include <iostream>
using namespace std;
class CT {
public:
void func(int tmp) {
cout << "func()普通函数, tmp = " << tmp << endl;
}
virtual void virtualfunc(int tmp) {
cout << "virtualfunc()虚函数, tmp = " << tmp << endl;
}
static void staticfunc(int tmp) {
cout << "staticfunc()静态成员函数, tmp = " << tmp << endl;
}
};
int main() {
CT ct;
CT* pct = &ct;
void (CT::*func_pointer)(int); // 一个类成员函数指针变量的定义
func_pointer = &CT::func;
(ct.*func_pointer)(100); // 使用类对象来调用类成员函数指针指向的成员函数
(pct->*func_pointer)(100); // 使用类指针来调用类成员函数指针指向的成员函数
return 0;
}
```
在上述示例代码中,定义了一个类CT,其中包含了一个普通成员函数func、一个虚函数virtualfunc和一个静态成员函数staticfunc。主函数中定义了一个类对象ct和一个类指针pct,并声明了一个类成员函数指针变量func_pointer,将其指向func函数。接着使用类对象和类指针来调用func指向的成员函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [C++类成员函数指针使用介绍](https://blog.csdn.net/luoyayun361/article/details/101109522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [类成员函数指针](https://blog.csdn.net/A_With_better/article/details/123079792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文