日志12

在C++中,友元函数(friend function)是一种可以访问类的私有成员和保护成员的特殊函数。友元函数并不是类的成员函数,而是定义在类外的普通函数。但由于被声明为友元,它可以直接访问类的私有和保护成员。

友元函数的特点

  1. 访问权限:友元函数可以访问类的私有和保护成员。
  2. 非成员函数:友元函数是类外的普通函数,不属于类的成员函数。
  3. 需要显式声明:友元函数必须在类的内部通过关键字 friend 声明。

友元函数的使用场景

  1. 当需要某些外部函数对类的私有成员进行操作时,可以使用友元函数。
  2. 两个类之间需要共享数据时,可以通过友元函数实现。

友元函数的声明与实现

示例代码

以下是一个友元函数的简单示例:

#include <iostream>
using namespace std;

// 定义一个类
class Box {
private:
    double length;  // 私有成员
    double width;
    double height;

public:
    // 构造函数
    Box(double l, double w, double h) : length(l), width(w), height(h) {}

    // 声明友元函数
    friend double calculateVolume(const Box& b);
};

// 定义友元函数
double calculateVolume(const Box& b) {
    // 直接访问类的私有成员
    return b.length * b.width * b.height;
}

int main() {
    Box box(2.0, 3.0, 4.0);
    cout << "Box volume: " << calculateVolume(box) << endl;
    return 0;
}

输出结果

Box volume: 24

注意事项

  1. 友元函数的声明:必须在类内部进行,但实现可以在类外部。
  2. 友元关键字的使用:友元函数通过 friend 声明,它是类对外的一种“友好行为”,但要谨慎使用,过多的友元可能破坏封装性。
  3. 友元函数与继承:友元关系不能继承,子类不会自动成为友元函数的友元。
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务