21xrx.com
2024-11-22 05:40:04 Friday
登录
文章检索 我的文章 写文章
如何在C++中实现成员函数调用全局函数
2023-07-09 06:15:59 深夜i     --     --
C++ 成员函数 全局函数 调用 实现

在C++中,成员函数(即类的函数)和全局函数(即不属于任何类的函数)是两个不同的概念。通常情况下,成员函数只能在类的内部使用,而全局函数可以在任何地方调用。但是有时候,我们可能需要在成员函数中调用全局函数,那么该如何实现呢?

一种最简单的实现方式是将全局函数声明为友元函数。例如:


#include<iostream>

using namespace std;

//声明全局函数

void print(int num);

class MyClass {

public:

  void doSomething(int num) {

    //调用全局函数

    print(num);

  }

};

//定义全局函数

void print(int num)

  cout << "The number is: " << num << endl;

int main() {

  MyClass obj;

  obj.doSomething(10); //调用成员函数

  return 0;

}

在这个例子中,我们声明了一个全局函数`print`,并将其在`MyClass`类中声明为友元函数。这样,在`MyClass`类的成员函数`doSomething`中就可以直接调用`print`函数了。

还有一种方式是使用指向全局函数的指针。例如:


#include<iostream>

using namespace std;

//声明全局函数

void print(int num);

class MyClass {

public:

  void doSomething(int num) {

    //定义指向全局函数的指针

    void (*ptr)(int) = print;

    //通过指针调用全局函数

    (*ptr)(num);

  }

};

//定义全局函数

void print(int num) {

  cout << "The number is: " << num << endl;

}

int main() {

  MyClass obj;

  obj.doSomething(10); //调用成员函数

  return 0;

}

在这个例子中,我们同样声明了一个全局函数`print`,但是没有将其声明为友元函数。在`MyClass`类的成员函数`doSomething`中,我们定义了一个指向全局函数的指针,然后通过指针调用`print`函数。

总之,以上两种方式都可以实现在成员函数中调用全局函数,具体使用哪种方式取决于具体情况。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复