C++学习之友元函数(一)

来源:互联网 发布:淘宝首页排版要求 编辑:程序博客网 时间:2024/06/07 09:01

本文是学习慕课网C++远征之模板类.
友元函数分为友元全局函数和友元成员函数:
友元全局函数:将函数定义在全局,并在类中声明为友元
友元成员函数:将函数定义在类当中,并把函数声明为另外一个类的友元函数
两个都可以直接访问类的私有成员
(1)友元全局函数
先来看一段代码

#include <iostream>using namespace std;class Coordinate //定义一个类:坐标{   friend void printXY(Coordinate &c); //友元函数,参数提倡引用或指针的方法   public:   Coordinate(int x,int y); //构造函数   private:      int m_iX; //x坐标      int m_iY; //y坐标 }; void printXY(Coordinate &c)//友元函数定义不需要加类名 {    cout<<c.m_iX<<' '<<c.m_iY;//直接访问类的私有成员    } Coordinate::Coordinate(int x,int y) {     m_iX=x;     m_iY=y; } int main(void) {     Coordinate coor(3,5);     printXY(coor);     return 0;  }  

(2)友元成员函数

#include <iostream>using namespace std;class Coordinate;class Circle{public:    void printXY(Coordinate &c);};//定义一个类:坐标class Coordinate{   friend void Circle::printXY(Coordinate &c);//友元函数为另一个类的成员函数   //友元函数,Cricle类的成员函数   public:   Coordinate(int x,int y); //构造函数   private:      int m_iX; //x坐标      int m_iY; //y坐标 }; int main(void) {     Coordinate coor(3,5);     Circle circle;     circle.printXY(coor);     return 0;  } void Circle::printXY(Coordinate &c) {     cout<<c.m_iX<<' '<<c.m_iY; } Coordinate::Coordinate(int x,int y) {     m_iX=x;     m_iY=y; }

好了,这里是简单了解了定义,下次我会更详细地学习友元函数的编码实现。

原创粉丝点击