如果类内的某些数据类型是private私有的,那么就无法从外部调用了
如何让其他类或者函数访问这些私有数据呢
这里就可以在类内加一条函数声明,
声明这些函数是友元 friend即可
class example {
private:
int a, b, c;
public:
example(int a,int b,int c):a(a),b(b),c(c){}
friend void printf(example& a); //这里加一条友元声明即可
};
void printf(example& a)
{
cout << a.a << endl;
return;
}
这里需要注意的是,这里只是声明外部有个函数可以调用类中的私有数据,类本身没有这个函数
如果想从类中调用,则需要在类中自己写一个成员函数
#include<iostream>
using namespace std;
class example {
private:
int a, b, c;
public:
example(int a,int b,int c):a(a),b(b),c(c){}
friend void printf(example& a);
void printf(example& a)
{
cout << a.b << endl;
return;
}
};
void printf(example& a)
{
cout << a.a << endl;
return;
}
int main()
{
example a(1, 2, 3);
printf(a); //外部函数
a.printf(a); //类中的函数
return 0;
}
结果自然是:
1
2
还有就是友元类的概念
class B
{
friend class A; //声明A为B的友元类
};
其实就是对于B来说A是友元的,所以A中的所有成员函数都可以调用B的数据,无论这个数据是否是私有还是公有