21xrx.com
2025-03-28 02:38:14 Friday
文章检索 我的文章 写文章
如何在C++类中调用类外函数?
2023-06-28 00:41:45 深夜i     24     0
C++ 类外函数 调用 方法

在C++编程中,类是一种封装数据和方法的机制,它将数据和操作数据的方法组合在一起。有时候在类中需要调用类外的函数,这时候就需要用到类的友元函数或静态函数。

1. 友元函数

友元函数是一种在类中访问非公有成员的机制,它是一个函数而不是类的成员函数。友元函数可以访问类中的私有成员和保护成员,可以在类中定义,并通过友元声明实现与类相关联。以下是一个示例:

#include<iostream>
using namespace std;
class MyClass {
  private:
    int num;
  public:
    void setValue(int n)
      num = n;
    
    friend void printValue(MyClass obj);
};
void printValue(MyClass obj)
  cout<<"The value of num is:"<<obj.num<<endl;
int main() {
  MyClass obj;
  obj.setValue(10);
  printValue(obj);
  return 0;
}

在这个例子中,类`MyClass`中包括一个私有成员变量`num`和一个公有成员函数`setValue`,它将传入的参数值赋给`num`。在`MyClass`中定义了一个友元函数`printValue`,用来打印`num`的值。在`main()`函数中,创建类对象`obj`,将10赋给`num`,再调用`printValue()`函数打印`num`的值。

2. 静态函数

另一种在类中调用类外函数的方式是使用静态函数。静态函数是一种特殊的成员函数,不需要通过类的对象来访问,也不需要访问类的私有成员。在类外调用静态函数可以直接使用类名和作用域限制符来访问。以下是一个示例:

#include<iostream>
using namespace std;
class MyClass {
  private:
    static int count;
  public:
    static void setCount(int n)
      count = n;
    
    static void printCount()
      cout<<"The value of count is:"<<count<<endl;
    
};
int MyClass::count = 0;
int main() {
  MyClass::setCount(10);
  MyClass::printCount();
  return 0;
}

在这个例子中,类`MyClass`中包括一个静态成员变量`count`和两个静态成员函数`setCount`和`printCount`。在`main()`函数中,通过类名调用`setCount`函数将10赋给`count`,再通过类名调用`printCount`函数打印`count`的值。

总结:在C++中,可以使用友元函数或静态函数的方式在类中调用类外函数。具体实现这两种方法的细节略有不同,开发者需要根据具体情况选择合适的方法。需要注意的是,在友元函数和静态函数中不能使用this指针来引用非静态成员。

  
  

评论区