我是C++初学者,重温了一下友元,发现友元主要应用在这几点,而平时也不会多用,因为代码一多会忘记当初类、外部/成员函数之间的友元关系,用着方便,重温代码就麻烦许多,这些就当是了解概念。
友元主要应用在:1外部函数;2类的成员函数;3类与类之间的友元。
1在类中使用友元函数实现对外部函数的引用
如:
class MyClass
{
public:
friend void setNum(int num); //外部函数用做友元函数
MyClass(){};
~MyClass(){};
protected:
int num;
};
void setNum(int num)
{
~~~~~
}
2在类中使用友元函数实现对其他类的成员函数的引用
如:
//===============
class B
{
public:
int add(A &a);
private:
int _numa;
int _numb;
};
//==============
int B::add(A &a)
{
return a.numa+a.numb;
}
//==============
class A
{
public:
friend int B::add(A &a);
void setNum(int a, int b)
{
numa = a ;
numb = b ;
}
private:
int numa;
int numb;
};
3友元类
如:
class A
{
public:
friend class B;
//friend int B::add(A &a);
void setNum(int a, int b)
{
numa = a ;
numb = b ;
}
private:
int numa;
int numb;
};
友元函数破坏了类的封装性,对初学者来说,尽量少用,因为难驾驭。