C++ 友元

来源:互联网 发布:牛客网 大数据面试题 编辑:程序博客网 时间:2024/05/17 06:15

友元会将类的内部暴露给其他类或函数,破坏类的抽象性原则,只在有限情况下使用

一定要定义好函数 和类的位置

友元函数使用实例:

#include <iostream>#include <string>using namespace std;//提前声明类class student;class grade{private :int _grade;public :grade(int grade):_grade(grade){} void display(student &);};//可以当做一个普通类class student{public:int _num;string _name;     //构造函数和普通函数除了返回值得区别student(int num,string name):_num(num),_name(name){}//要调用另外一个类中函数  可以申明为友元函数  不过将类对象传递过去    friend void grade::display(student &);};//友元函数的定义void grade::display(student &two){   cout<<"student  name  num  grade: "<<two._name<<"  "<<two._num<<"  "<<this->_grade<<endl;};int main(){ student stu(100,"buyingfei"); grade gra(100); gra.display(stu); return 0;}

运行结果:

友元类使用:

#include <iostream>#include <string>using namespace std;//可以当做一个普通类class student{private:int _num;string _name;public:   friend class grade;  //声明为友元类  则在本类中可以调用声明友元类中成员     //构造函数和普通函数除了返回值得区别student(int num,string name):_num(num),_name(name){}//传递参数是另外类的引用  声明函数加 ;  不要{}void display(grade &);};class grade{private :int _grade;public :grade(int grade):_grade(grade){};int get(){return this->_grade;}};//友元函数的定义void student::display(grade &two){   cout<<"student  name  num grade: "<<this->_name<<"  "<<this->_num<< "   "<<two.get()<<endl;};int main(){ student stu(100,"buyingfei"); grade gra(100); stu.display(gra); return 0;}

运行结果:



	
				
		
原创粉丝点击