07友元

友元介绍

友元 : 允许非类成员函数访问类的非公有成员

  • 友元函数 - 声明: friend 类型 友元函数名(参数)
  • 友元类 - 声明: friend class 友元类名

友元函数

类体进行声明,可以在类外进行定义,作用域在类体外

  • 提高程序运行效率
class Test
{
	friend void friFun(const Test& t1, const Test& t2); //可以放在private,protected,public成员中
public:
	Test();
private:
	int x_;
	int y_;
};

void friFun(const Test& t1, const Test& t2)
{
	cout << t1.x_ << endl;
}

友元函数注意事项

  1. 友元函数不是类的成员函数,可以访问类的任意成员
  2. 可以把友元函数放在private,public,protected中,结果一样
  3. 作用域并非该类,如果是另外一个类的成员函数,作用域为另外一个类,否则与一般函数的作用域相同
  4. 尽可能少用

友元类

友元类的所有成员函数都是另外一个类的友元函数

  • 如果两个类分别放在不同的文件中,可以加入另外一个类的头文件,或者用前向声明
// friend_class.h
#ifndef _TEST_H_
#define _TEST_H_

class FriClass;	//前向声明
//或者包含头文件
//#include "friclass.h"

class Test
{
	friend class FriClass; 
public:
	Test();
};

#endif

友元类注意事项

  • 友元关系是单向的
  • 不能传递
  • 不能继承
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页