21xrx.com
2024-09-20 05:49:50 Friday
登录
文章检索 我的文章 写文章
如何在C++类中调用类外函数?
2023-06-28 00:41:45 深夜i     --     --
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指针来引用非静态成员。

  
  

评论区

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