【C++】友元成员

C++友元函数与友元类特性解析

类的特性之一就是封装,而友元就是C++为用户提供打破这种封装的手段,友元分为友元函数和友元对象

友元函数

  • 友元函数,他只是一个函数,友元函数不是类的成员,通过类对象是无法访问的,但是在这个函数中有权通过对象访问类中的所有成员
  • 友元函数,无论声明在类中的任何访问属性下都可以,不影响他的调用和访问

示例:

#include<iostream>
class node {
    int id = 10;
    friend void fun(node& n);
};
void fun(node& n) {
    std::cout << n.id << std::endl;
}
int main() {
    node n;
    fun(n);//输出10
}

友元类

友元类是一个单独的类,只不过和友元函数一样,在类中声明了一个友元类,在这个友元类中同样也可以访问该类中的所有成员,在A类中声明B类为A类的友元类,那么在B类中就可以访问A类中的所有成员

示例:

#include<iostream>
class A {
    friend class B;
    int id = 10;
};
class B {
public:
    void fun(A& a) {
        std::cout << a.id << std::endl;
    }
};
int main() {
    A a;
    B b;
    b.fun(a);//输出10
}

友元的特性

  1. 单方向:B是A的朋友,B可以访问A的数据,A不可以访问B的数据
  2. 不传递:A是B的朋友,B是C的朋友,A和C没有朋友关系
  3. 不继承:A是B的朋友,B是C的父亲,A和C没有朋友关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值