C++ 友元

C++ 友元

在C++中,友元(Friend)功能是一个重要的特性,它允许一个类或函数访问另一个类的私有(private)和保护(protected)成员。使用友元特性可以提高程序的灵活性,但同时也要小心管理,因为它破坏了类的封装性。

  • 友元函数
  • 友元类
  • 友元成员函数

友元不具有继承性和传递性。

友元函数

一个类可以将某些非成员函数声明为其友元,这样这些函数就可以访问该类的所有私有和保护成员。声明一个友元函数通常在类定义中用 friend 关键字标识:

class MyClass {
    friend void friendFunction(MyClass &obj); // 将friendFunction声明为友元

private:
    int value;
};

void friendFunction(MyClass &obj) {
    // 可以访问MyClass的私有成员
    std::cout << "Value: " << obj.value << std::endl;
}

友元类

一个类也可以将其他类声明为友元,这样友元类的所有成员函数都可以访问原始类的私有和保护成员。例如:

class MyClass {
    friend class FriendClass;

private:
    int value;
};

// frientClass作为友元类可以访问原始类的所以成员
class FriendClass {
public:
    void display(MyClass &obj) {
        std::cout << "Value: " << obj.value << std::endl;
    }
};

友元成员函数

将某个类的特定成员函数设为另一个类的友元,而不是整个类:

class MyClass;

class AnotherClass {
public:
    void show(MyClass &obj);
};

class MyClass {
    friend void AnotherClass::show(MyClass &obj);

private:
    int value;
};

// AnotherClass类的show成员函数被MyClass类声明为友元,因此,show可以访问MyClass类的所有成员
void AnotherClass::show(MyClass &obj) {
    std::cout << "Value: " << obj.value << std::endl;
}

友元函数和友元成员函数的区别

  • 友元函数:独立的非成员函数,例如是全局函数,可以访问类的私有和保护成员。
  • 友元成员函数:另一个类的成员函数,被允许访问当前类的私有和保护成员。
作者:WuQiling
文章链接:https://www.wqlblog.cn/c-友元/
文章采用 CC BY-NC-SA 4.0 协议进行许可,转载请遵循协议
暂无评论

发送评论 编辑评论


				
默认
贴吧
上一篇
下一篇