关于friend函数的用法

friend函数:
1、类中函数前面加friend的函数;
2、该函数不属于任何对象,其实就是一个全部函数,但是这个全局函数仅仅作用于该类的对象。
3、该函数可以访问该类的私有成员变量,公有的更加不用说了。

具体我们看一个例子:

#include <cstring>
#include <stdio.h>

class Number {
public:
  Number() = default;
  Number(int x, int y) : m_x(x), m_y(y) {}

  friend Number operator+(const Number &n1, const Number &n2) {
    Number add;
    add.m_x = n1.m_x + n2.m_x;
    add.m_y = n1.m_y + n2.m_y;
    return add;
  }

  friend void printNum(Number n) { printf("c:%d,%d\n", n.m_x, n.m_y); }
  static void printNum2(Number n) { printf("c:%d,%d\n", n.m_x, n.m_y); }

public:
  int m_x{0};
  int m_y{0};
};

int main() {
  Number a(10, 20);
  Number b(30, 50);
  Number c = a + b;
  printNum(c);
  Number::printNum2(c);
}

上面的例子主要展示了friend和static的区别,静态变量也是不属于任何类,也是一个类似于全局函数的函数,但是两者有本质区别,friend是为该类服务的,static是为全部对象服务的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值