c++ 友元函数

在 C++ 中,友元函数是指在一个类的声明或定义中声明的非成员函数,该函数被授予了访问该类的私有成员和保护成员的权限。这意味着友元函数可以访问该类中的私有和保护成员,尽管它不是类的成员函数。

友元函数的存在是为了提供一种特殊的访问控制机制,允许一些外部函数访问某个类的私有成员,但同时又不是类的成员函数。这在某些情况下可能很有用,例如在实现一些操作符重载时,需要对类的私有成员进行操作,但又不想将操作符重载函数直接定义为类的成员函数。

友元函数的声明需要在类的声明或定义中使用 friend 关键字进行声明。这样一来,友元函数就能够在实现细节中访问该类的私有和保护成员。

#include <iostream>

class Complex {
private:
    double real;
    double imag;

public:
    Complex(double r = 0, double i = 0) : real(r), imag(i) {}

    // 声明友元函数
    friend std::ostream& operator<<(std::ostream& out, const Complex& c);

    // getter 函数
    double getReal() const { return real; }
    double getImag() const { return imag; }
};

// 定义友元函数
std::ostream& operator<<(std::ostream& out, const Complex& c) {
    out << "(" << c.getReal() << ", " << c.getImag() << "i)";
    return out;
}

int main() {
    Complex c1(3.5, 2.5);
    Complex c2(1.2, 4.8);

    // 使用 << 运算符打印复数对象
    std::cout << "c1 = " << c1 << std::endl;
    std::cout << "c2 = " << c2 << std::endl;

    return 0;
}

相关推荐

  1. C++】函数

    2024-04-09 15:56:01       63 阅读
  2. c++ 函数

    2024-04-09 15:56:01       33 阅读
  3. 浅谈C++函数

    2024-04-09 15:56:01       42 阅读
  4. 函数

    2024-04-09 15:56:01       52 阅读
  5. 函数详解

    2024-04-09 15:56:01       39 阅读
  6. C++函数类(C++ friend关键字)

    2024-04-09 15:56:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 15:56:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 15:56:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 15:56:01       87 阅读
  4. Python语言-面向对象

    2024-04-09 15:56:01       96 阅读

热门阅读

  1. 深入探索RocketMQ:全方位技术学习指南

    2024-04-09 15:56:01       32 阅读
  2. 算法刷题记录 Day40

    2024-04-09 15:56:01       33 阅读
  3. 掌握ChatGPT:提升学术论文写作技巧

    2024-04-09 15:56:01       34 阅读
  4. 【系统架构师】-23种设计模式

    2024-04-09 15:56:01       31 阅读
  5. ubuntu 安装多版本 python 并使用

    2024-04-09 15:56:01       34 阅读
  6. Android Hal service compatibility matrix

    2024-04-09 15:56:01       41 阅读
  7. 在react项目中使用redux和reduxjs/toolkit

    2024-04-09 15:56:01       37 阅读
  8. 常见的行为识别算法及视频处理算法

    2024-04-09 15:56:01       34 阅读