📌  相关文章
📜  在 C++ 类中调用非成员函数(1)

📅  最后修改于: 2023-12-03 14:50:52.457000             🧑  作者: Mango

在 C++ 类中调用非成员函数

在C++类中,我们可以定义成员函数和数据成员。但是,有时候,我们需要调用非成员函数来完成一些特殊的操作,例如打印一些信息,或者进行一些复杂的计算。本文将介绍如何在C++类中调用非成员函数。

在类中声明非成员函数

要在C++类中调用非成员函数,我们需要首先在类中声明该函数。在类中声明非成员函数的方法与声明成员函数相同,只是在函数名称前面添加friend关键字。

class MyClass {
public:
    void myPublicFunction();

private:
    int myPrivateData;

    friend void myFriendFunction(); // 在类中声明非成员函数
};

在上面的代码中,我们在MyClass类中声明了一个名为myFriendFunction的非成员函数,并使用friend关键字标记它。现在,我们可以在该类的成员函数和非成员函数中使用该函数。

在非成员函数中访问类成员

为了能够在非成员函数中访问类的数据成员和成员函数,我们可以将类的对象作为参数传递给非成员函数,或将非成员函数声明为该类的友元函数。下面是一个使用对象作为参数的例子:

class MyClass {
public:
    void myPublicFunction() {
        myFriendFunction(*this); // 在成员函数中调用非成员函数并传递当前对象
    }

private:
    int myPrivateData;

    friend void myFriendFunction(const MyClass& obj); // 在类中声明非成员函数
};

void myFriendFunction(const MyClass& obj) { // 非成员函数
    cout << obj.myPrivateData << endl; // 访问类的私有数据成员
}

在上面的代码中,我们定义了一个名为myFriendFunction的非成员函数,并将MyClass对象作为参数传递给它。在该函数中,我们可以使用传递进来的对象来访问类的数据成员。

注意事项

需要注意的是,在调用非成员函数时,我们需要先声明该函数,因为编译器需要知道该函数的返回类型和参数列表。如果我们没有提前声明该函数,编译器将无法编译代码并会报错。

此外,当我们使用类对象作为参数传递给非成员函数时,我们应该使用引用或指针来避免对象复制造成的开销。

总结

在C++类中调用非成员函数可以帮助我们完成一些特殊的操作,例如进行复杂的计算或打印信息。要在C++类中调用非成员函数,我们需要在类中声明该函数并使用friend关键字标记它,或将该函数定义为该类的友元函数。在非成员函数中访问类成员时,我们需要使用对象的引用或指针来避免复制对象造成的开销。