C++基础知识,友元函数,友元类,友元成员函数

用到的类

class B
{
private:
	int data;
	friend class A;//这里他虽然没有找到A类,但并不会报错
public:
	void printData()
	{
		std::cout << data << std::endl;
	}
};
class A
{
public:
	void testMethod(int data, B& b)
	{
		b.data = data;
	}
};


1、友元函数,可以调用某个类的所有权限的成员

在该类中:friend void/… funcName()

2、友元类:友元类,如果一个类是另一个的友元类,那就可以在该类中访问声明友元类的类中的所有成员

	A a;
	B b;
	a.testMethod(1, b);
	b.printData();

执行结果
在这里插入图片描述
注意点

  • 1、友元关系不能被继承
  • 2、友元关系是单向的,A类是B类的友元,但B类并不是A类的友元
  • 3、友元关系不能传递

3、将成员函数作为友元函数,我喜欢你的脸,并不代表我喜欢你的全部

缺点:破坏了类的结构,降低了类的结构型
优点:增加了灵活性

发布了157 篇原创文章 · 获赞 167 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40666620/article/details/102894355