MST

星途 面试题库

面试题:C++ 中如何通过友元函数实现对象间数据共享

请解释在C++里,友元函数的作用以及它是如何打破类的封装性来实现对象间数据共享的。请举例说明如何定义一个友元函数,使其能够访问类的私有成员从而达到数据共享目的。
22.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

友元函数的作用

友元函数是一种定义在类外部,但可以访问类的私有和保护成员的函数。它的主要作用是为了让某些函数能够访问类的私有或保护成员,在一些情况下方便数据共享和操作,同时又不必将这些成员设为公有,避免过度暴露类的内部实现细节。

打破封装性实现数据共享的方式

封装性是面向对象编程的特性之一,它将数据和操作封装在类内部,通过访问修饰符(如private、protected)限制外部对内部数据的访问。友元函数打破封装性是因为它虽然定义在类的外部,却可以访问类的私有和保护成员,这样就使得类的部分内部数据可以在类外部被特定的函数操作,实现了对象间数据共享。

示例代码

#include <iostream>

class MyClass {
private:
    int privateData;

public:
    MyClass(int data) : privateData(data) {}

    // 声明友元函数
    friend void friendFunction(MyClass obj);
};

// 定义友元函数
void friendFunction(MyClass obj) {
    std::cout << "访问MyClass的私有成员privateData: " << obj.privateData << std::endl;
}

int main() {
    MyClass myObj(42);
    friendFunction(myObj);
    return 0;
}

在上述代码中,friendFunctionMyClass 的友元函数,它可以访问 MyClass 的私有成员 privateData,从而实现了数据共享。