C++ 友元(friend)

本文解释了C++中友元的概念,如何通过friend关键字让一个类或函数访问另一个类的私有成员,以及友元关系的单向性。通过实例展示了如何在类B中访问类A的私有变量。
摘要由CSDN通过智能技术生成

在C++中,友元(friend)是一种特殊的关系,允许一个类或函数访问另一个类的私有成员。通常情况下,只有同一类中的成员函数才能访问该类的私有成员,但通过友元关系,可以允许其他类或函数也能够访问私有成员。

友元关系通过在类定义中使用 friend 关键字来声明。被声明为友元的函数或类可以访问另一个类的私有成员,即使这些成员在正常情况下对外部是不可见的。需要注意的是,友元关系是单向的,声明了友元的类或函数可以访问其他类的私有成员,但被访问的类并不具备对友元类或函数私有成员的访问权限。

class A {
private:
    int privateMember;

public:
    A() : privateMember(0) {}

    // 声明B类为A类的友元
    friend class B;
};

class B {
public:
    void accessPrivateMember(A& a) {
        // 友元类B可以访问A类的私有成员privateMember
        a.privateMember = 10;
    }
};

int main() {
    A objA;
    B objB;
    objB.accessPrivateMember(objA); // 通过B类对象调用访问A类私有成员的函数
    return 0;
}

在这个示例中,类 B 被声明为类 A 的友元。因此,类 B 的成员函数 accessPrivateMember() 可以访问类 A 中的私有成员 privateMember。在 main() 函数中,我们创建了一个 A 类的对象 objA 和一个 B 类的对象 objB,然后通过 objB 对象调用了 accessPrivateMember() 函数,成功地修改了 objA 对象的私有成员 privateMember 的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值