• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

C++中的friend究竟有什么用

C++中的friend的作用是:1. 在类里声明一个普通函数,在前面加上friend修饰,那么这个函数就成了该类的友元,可以访问该类的一切成员;2.一个普通函数可以是多个类的友元函数。

一、C++中的friend的作用

1.在类里声明一个普通函数,在前面加上friend修饰,那么这个函数就成了该类的友元,可以访问该类的一切成员。

2.一个普通函数可以是多个类的友元函数。

3.一个类的成员函数也可以是另一个类的友元,从而可以使得一个类的成员函数可以操作另一个类的数据成员。

4.整个类也可以是另一个类的友元,该友元也可以称作为友类。友类的每个成员函数都可以访问另一个类的所有成员。

友元声明中声明的函数被视为已使用extern关键字声明。

friend函数是一个不是类成员的函数,但它可以访问类的私有和受保护的成员。友元函数不被视为类成员,它们是获得了特殊访问权限的普通外部函数。友元不在类的范围内除非它们是另一个类的成员,否则不能使用成员选择运算符(.和->)调用它们。friend函数由授予访问权限的类声明。可将friend声明放置在类声明中的任何位置。它不受访问控制关键字的影响。

友元关系不是相互的,除非显示指定。友元关系不能继承。友元关系不可传递。

类的外部,也就是通过实例来访问私有(private)或保护(protected)成员,这是被禁止的。但从实用性来说,的确有时很需要在外部访问,C++增加了一种称之为“友元(friend)”函数的声明,将“特权”赋给一些函数(可以是全局函数,也可以是其它类的成员函数),使之能够访问该类的私有和保护成员。

友元函数必须在类里面声明,而且友元函数一定不是该类的成员函数。另外,友元函数的声明在派生类无效,除非派生类中再声明一次,当然类型转换为基类时,使用没有任何问题。

延伸阅读:

二、友元函数的使用

友元函数的参数:

因为友元函数没有this指针,则参数要有三种情况:

要访问非static成员时,需要对象做参数;

要访问static成员或全局变量时,则不需要对象做参数;

如果做参数的对象是全局对象,则不需要对象做参数;

友元函数的位置

因为友元函数是类外的函数,所以它的声明可以放在类的私有段或公有段且没有区别。友元函数的调用

可以直接调用友元函数,不需要通过对象或指针

友元函数的分类:

根据这个函数的来源不同,可以分为三种方法:

普通函数友元函数:

目的:使普通函数能够访问类的友元

语法

声明: friend + 普通函数声明

实现位置:可以在类外或类中

实现代码:与普通函数相同

调用:类似普通函数,直接调用

一站式研发项目管理平台 PingCode

一站式研发项目管理平台 PingCode

支持敏捷\瀑布、知识库、迭代计划&跟踪、需求、缺陷、测试管理,同时满足非研发团队的流程规划、项目管理和在线办公需要。

相关文章