友元函数
c++ 中私有成员只能在类的成员函数内部被使用,如果要在别处使用私有内部成员则需要通过公有的函数来访问。
友元的设计使得程序员可以在类的成员函数外部直接访问类的私有成员。
如下demo
// FriendApplication.cpp: 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
class MyClass
{
public:
MyClass(int a,int b,int c);
MyClass();
~MyClass();
private:
int a;
int b;
friend void mprint(MyClass &myclass);//friend关键字代表此函数为友元函数,需在类的内部函数中声明友元
};
MyClass::MyClass()
{
}
MyClass::MyClass(int a1, int b1, int c1)
{
a = a1;
b = b1;
c = c1;
}
MyClass::~MyClass()
{
}
void mprint(MyClass &myclass)
/*****************
友元函数,在类的外部实现定义
它的定义方法与普通函数定义一样,而不同于成员函数的定义,因为它不需要指出所属的类
(成员函数定义:MyClass void mprint(MyClass &myclass))
*******************/
{
std::cout << "a = " << myclass.a << std::endl;//在此直接访问类的私有成员a
}
int main()
{
MyClass my(1,2,3),my1(4,5,6);
mprint(my1);
system("Pause");
return 0;
}
最后的输出结果为a=4
友元类
一个类 A 可以将另一个类 B 声明为自己的友元,类 B 的所有成员函数就都可以访问类 A 对象的私有成员
*********************************以此作为学习记录***********************************
感谢以下这两篇博客,从这两篇博客中学习得到知识。
http://c.biancheng.net/view/169.html
https://blog.csdn.net/u012861978/article/details/52095607