当前位置:首页 C++ > 正文

c++友元函数

作者:野牛程序员:2023-08-07 04:58:29 C++阅读 2959

C++ 友元函数是一种特殊的函数,它有权访问类的私有成员和保护成员,即使该函数不是类的成员函数。通过将函数声明为友元函数,可以允许其他非成员函数或其他类的成员函数访问类的私有和保护成员,从而实现对类的特殊访问权限。

友元函数的特点:

  1. 友元函数声明在类的内部,但不是类的成员函数,也不属于类的作用域。

  2. 友元函数可以访问类的私有成员和保护成员,绕过了访问权限控制。

  3. 友元函数之间不具有继承关系,也不能被继承。

  4. 友元关系不可传递,即如果 A 是 B 的友元,B 是 C 的友元,那么 A 和 C 之间并不具备友元关系。

友元函数的声明方式为在类的声明中用 friend 关键字来修饰函数声明,使其成为友元函数。在类的声明中声明友元函数后,需要在类外部实现这个友元函数。

示例:

class MyClass {
private:
    int privateVar;

public:
    MyClass(int num) : privateVar(num) {}

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

// 定义友元函数
void accessPrivateVar(MyClass obj) {
    cout << "Accessing privateVar from a friend function: " << obj.privateVar << endl;
}

int main() {
    MyClass obj(42);
    accessPrivateVar(obj); // 输出:Accessing privateVar from a friend function: 42
    return 0;
}

在上面的示例中,accessPrivateVar 是一个友元函数,它可以直接访问 MyClass 类的私有成员 privateVar,即使它不是类的成员函数。

虽然友元函数提供了更大的灵活性和方便性,但它也会破坏类的封装性,因为它绕过了类的访问权限控制。因此,在使用友元函数时,应该谨慎使用,只在必要的情况下使用,以确保类的封装性和安全性。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击