C++友元函数和友元类

C++友元函数和友元类

   友元是C++的一种特殊机制,用于打破类的封装性,使某些函数或类可以直接访问另一个类的私有(private)和受保护(protected)成员。友元关系由类显式声明,且单向且非继承。


1. 友元函数

  友元函数是被一个类声明为friend的普通函数。友元函数不属于类的成员函数,但可以直接访问该类的私有和受保护成员。

特点
  1. 友元函数不是类的成员函数,因此不能通过对象调用,而是通过普通的函数调用。
  2. 友元函数定义可以在类外部,也可以在类的内部定义。
  3. 友元关系是单向的:声明一个函数为友元函数,该函数可以访问类的私有成员,但反过来不行。

示例
#include <iostream>
class MyClass {
   
   
private:
    int privateVar;
public:
    MyClass(int val) : privateVar(val) {
   
   }
    // 声明友元函数
    friend void printPrivateVar(const MyClass& obj);
};

// 友元函数的定义
void printPrivateVar(const MyClass& obj) {
   
   
    std::cout << "Private Variable: " << obj.privateVar << std::endl;
}

int main() {
   
   
    MyClass obj(42);
    printPrivateVar(obj); // 调用友元函数
    return 0;
}

输出:

Private Variable: 42

友元函数的使用场景
  1. 实现全局函数访问类的私有成员
    • 如运算符重载(operator<<)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值