编程语言
首页 > 编程语言> > C++学习之友元函数和友元类

C++学习之友元函数和友元类

作者:互联网

目录

一、前言

二、友元函数

1. 介绍

2. 示例代码

三、友元类

1. 介绍

2. 示例代码


一、前言

主要介绍C++中的友元函数和友元类。

二、友元函数

1. 介绍

友元函数定义在类的外部,通过友元函数可以在类的外部修改类的私有属性,可理解为该函数是类的好朋友。类中,声明友元函数的关键字为friend,声明的位置和public或private 无关。具体示例代码如下。

2. 示例代码

#include "iostream"
using namespace std;

class A
{
public:
	friend void modifyA(A *pA,int _a);//友元函数
	A(int a,int b)
	{
		this->a = a;
		this->b = b;
	}
	int getA()
	{
		return this->a;
	}
protected:

private:
	int a;
	int b;
};
void modifyA(A *pA,int _a)
{
	pA->a = _a;
}
void main()
{
	A a1(1,2);
	cout << a1.getA()<<endl;

	modifyA(&a1,10);
	cout << a1.getA()<<endl;

	cout << "hello..."<< endl;

	system("pause");

}

三、友元类

1. 介绍

若B类是A类的友元类,则B类的所有成员函数都是A的成员函数,通过B类成员可以访问A类的私有成员。友元类通常设计为一种对数据操作或类之间传递消息的辅助类。

使用方法:

在A类中声明友元类名:

friend class B

在B类中定义A类:

A aObj

2. 示例代码

#include "iostream"
using namespace std;

class A
{
public:
	friend class B;//友元类 在B中可以访问A的私有成员 私有变量
	A(int a=0,int b=0)
	{
		this->a = a;
		this->b = b;
	}
	int getA()
	{
		return this->a;
	}

protected:

private:
	int a;
	int b;
};

class B
{
public:
	void Set(int a)
	{
		Aobject.a = a;
	}
	void printB()
	{
		cout << Aobject.a << endl;
	}
protected:

private:
	A Aobject;
};

void main()
{
	B b1;
	b1.Set(20);
	b1.printB();

	cout << "hello..."<< endl;

	system("pause");

}

 

标签:友元,函数,示例,之友,void,C++,int,友元类
来源: https://blog.csdn.net/Bixiwen_liu/article/details/114678033