友元会将类的内部暴露给其他类或函数,破坏类的抽象性原则,只在有限情况下使用
使用实例:
- #include <iostream>
- #include <string>
- using namespace std;
- //提前声明类
- class studentTwo;
- //可以当做一个普通类
- class studentOne
- {
- private:
- int _num;
- string _name;
- public:
- //构造函数和普通函数除了返回值得区别
- studentOne(int num,string name):_num(num),_name(name){}
- //传递参数是另外类的引用 声明函数加 ; 不要{}
- void display(studentTwo &);
- };
- class studentTwo
- {
- private :
- int _num;
- string _name;
- public :
- studentTwo(int num,string name):_num(num),_name(name){}
- //要调用另外一个类中函数 可以申明为友元函数 不过将类对象传递过去
- friend void studentOne::display(studentTwo &);
- };
- //友元函数的定义
- void studentOne::display(studentTwo &two)
- {
- cout<<"two name num: "<<two._name<<" "<<two._num<<endl
- <<"one name num: "<<_name<<" "<<_num<<endl;
- };
- int main(){
- studentOne one(100,"buyingfei");
- studentTwo two(110,"buyafei");
- one.display(two);
- return 0;
- }