c++ 非静态函数传参c函数
时间: 2023-11-03 20:36:38 浏览: 39
可以通过以下两种方式传参:
1. 通过函数参数传递。在非静态函数中声明一个参数类型为函数指针的变量,例如 void (*func_ptr)(int),然后在函数调用时传入一个符合该函数指针类型的函数名即可。
2. 通过全局变量传递。将函数指针声明为全局变量,在非静态函数中直接使用该变量即可。需要注意的是,全局变量的使用可能会带来代码可读性和安全性的问题,应该慎重使用。
相关问题
c++ 类的非静态成员函数传参c函数
可以作为参数传递给类的非静态成员函数。在C++中,C函数可以被视为一个函数指针,因此可以将其作为参数传递给非静态成员函数。例如,以下是一个类的非静态成员函数,它将接收一个指向C函数的指针作为参数:
```c++
class MyClass {
public:
void myFunction(void (*cFunction)(int)) {
// Call the C function with an integer argument
(*cFunction)(42);
}
};
// Define a C function that can be passed as an argument to myFunction
void myCFunction(int n) {
std::cout << "The C function was called with argument " << n << std::endl;
}
int main() {
// Create an instance of MyClass
MyClass myObj;
// Pass the C function as an argument to myFunction
myObj.myFunction(&myCFunction);
return 0;
}
```
输出结果为:
```
The C function was called with argument 42
```
c++this 作为函数传参
在C++中,this是一个指向当前对象的指针。当我们在一个成员函数内部访问对象的成员变量时,实际上是通过this指针来访问的。在函数内部,可以通过this指针来访问对象的成员变量和成员函数。
当我们需要在一个成员函数内部将当前对象传递给另一个函数时,可以将this指针作为函数参数进行传递。这样另一个函数就可以访问当前对象的成员变量和成员函数了。
例如,假设我们有一个类A,其中有一个成员函数foo,我们需要在foo函数内部调用另一个函数bar,并将当前对象指针传递给bar函数。代码如下:
```cpp
class A {
public:
void foo() {
// 将当前对象指针作为参数传递给bar函数
bar(this);
}
void bar(A* obj) {
// 访问当前对象的成员变量和成员函数
obj->memberVar = 10;
obj->memberFunc();
}
private:
int memberVar;
void memberFunc() {}
};
```
在上面的例子中,我们将this指针作为参数传递给了bar函数,并在bar函数内部通过该指针访问了当前对象的成员变量和成员函数。