C++中的友元和友元函数

举报
努力变强的小C 发表于 2022/09/29 22:29:03 2022/09/29
【摘要】 C++中的友元和友元函数

 目录


友元的定义

友元的好处

友元函数初识 

友元函数的定义 



友元的定义

类中的主要特点就是数据的隐藏以及它的封装,就是类中的私有成员,只能在内定义的范围中使用,换句话来说就是私有成员就只能通过他的成员函数来访问,但是平时我们访问类的私有成员时,需要在程序中一次或者多次的调用成员函数,,这样就会使得调用的函数越次数越来越多,空间的开销和时间的开销也会越来越大,从而降低我们程序的运行效率


友元的好处

为了解决以上的问题,C加加特别提供了一种特殊的访问私有成员的途径,这种方法在不放弃所有成员的数据安全情况下,即封装性,像一个普通的函数或者类中的成员,函数可以访问到某一类信息中,在C加加中用有源作为实现这个条件的一种辅助手段,居家家中的有缘为数据隐藏以及封装性,这堵密不透风的墙开了一个小孔,外界可以通过有源函数这个小孔窥探类内部的秘密,所以来说,有缘就是一种可以通向私有成员的后门 

友元函数初识 

友元函数是可以不属于任何类的非成员函数,他也可以是另一个类的成员文书,虽然友元函数,可能不是当前类的成员函数,但是它可以访问该类中的所有成员,包括私有成员保护成员和共有成员三大部分

友元函数的定义 

在类中声明友元函数时,需要在它的函数名前加上关键字friend,该声明既可以放在私有部分,也可以放在公有部分也可以保护部分。友元函数可以定义在类的内部,也可以定义在类的外部

下面举一个将非成员函数声明为友元函数的例子:

#include <iostream>
using namespace std;
class A {
public:
	A(int n,int s) {
		num = n;
		score = s;
	}
	void showscore() {

	}
	friend int score_get(A &ob) {
		return (int)(ob.score / ob.num);
	}
private:
	int num, score;
};
int main() {
	A obj[3] = {
		A(3,300),
		A(4,450),
		A(5,480)
	};
	for (int i = 0; i < 3; i++) {
		cout << score_get(obj[i]) << endl;
	}
	return 0;
}

输出结果:

100
112
96

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。