📜  C++程序使用Friend 函数交换两个成员(1)

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

C++程序使用Friend 函数交换两个成员

C++中的一个类可以将其成员函数声明为 friend,以便访问其私有成员。本文介绍如何使用 friend 函数交换两个类的私有成员。

代码实现
#include<iostream>
using namespace std;

class Swap {
    private:
        int num1, num2;
    public:
        Swap(int a, int b) {
            num1 = a;
            num2 = b;
        }
        friend void swap(Swap &s);
};

void swap(Swap &s) {
    int temp = s.num1;
    s.num1 = s.num2;
    s.num2 = temp;
}

int main() {
    Swap s(10, 20);
    cout << "Before Swapping: " << endl;
    cout << "num1: " << s.num1 << " num2: " << s.num2 << endl;
    swap(s); // 调用 friend 函数
    cout << "After Swapping: " << endl;
    cout << "num1: " << s.num1 << " num2: " << s.num2 << endl;
    return 0;
}
代码解析

上述代码中定义了一个 Swap 类,该类包含两个私有成员变量 num1num2。在 Swap 类中,我们将 swap 函数声明为 friend 函数。这意味着 swap 函数可以访问 Swap 类的私有成员变量。

swap 函数中,我们使用一个临时变量来交换两个变量的值。在 main 函数中,我们创建了一个类的对象 s ,并分别打印出交换前后的 num1num2 的值,接着调用 swap 函数来交换私有成员变量,再次打印输出交换后的 num1num2 的值。

运行结果
Before Swapping: 
num1: 10 num2: 20
After Swapping: 
num1: 20 num2: 10
总结

通过让函数成为一个 friend 函数,我们可以在类的外部访问私有成员变量。friend 函数在 C++ 中非常有用,因为它可以让我们访问类的私有成员并完成一些操作。然而,它也应该谨慎使用,以避免破坏数据的封装性和运行期故障。