C++ 友元介绍

在C++中,友元(Friend)是一种特殊的访问权限,允许类的非成员函数或其他类的成员函数访问该类的私有成员。可以通过将这些函数声明为该类的友元来实现。

下面是一个简单的示例:

class MyClass {
private:
    int private_data;

public:
    MyClass(): private_data(0) {}

    friend void friend_func(MyClass& obj);
};

void friend_func(MyClass& obj) {
    obj.private_data = 123; // 访问私有成员
}

int main() {
    MyClass obj;
    friend_func(obj); // 调用友元函数
    return 0;
}

在上述代码中,MyClass类中定义了一个私有成员变量private_data,同时声明了friend_func函数为该类的友元。friend_func函数可以直接访问MyClass对象的私有成员变量,并对其进行修改。

需要注意的是,友元函数并不属于该类的成员函数,因此它不能使用该类的this指针,也不能直接访问该类的成员函数。

除了友元函数外,C++中还支持友元类。友元类可以访问该类的所有私有成员,例如:

class MyClass {
private:
    int private_data;

    friend class FriendClass;
};

class FriendClass {
public:
    void func(MyClass& obj) {
        obj.private_data = 456; // 访问私有成员
    }
};

int main() {
    MyClass obj;
    FriendClass fc;
    fc.func(obj); // 调用友元类的函数
    return 0;
}

在上述代码中,MyClass类声明了FriendClass类为其友元,该类可以访问MyClass对象的私有成员。然后,在main函数中创建了MyClass对象和FriendClass对象,并通过调用FriendClass对象的函数来访问MyClass对象的私有成员变量。

你可能感兴趣的:(c++,java,开发语言)