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对象的私有成员变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值