首页 > 代码库 > 友元——友元可以访问与其有好友关系的类中的私有成员。 友元包括友元函数和友元类。

友元——友元可以访问与其有好友关系的类中的私有成员。 友元包括友元函数和友元类。

简介:友元可以访问与其有好友关系的类中的私有成员。
     友元包括友元函数和友元类。

 

【1】将普通函数声明为友元函数

#include<iostream>using namespace std;class Time{        public:                Time(int,int,int);                friend void display(Time &);//定义友元函数        private:                int hour;                int minute;                int sec;};Time::Time(int h,int m,int s){        hour = h;        minute = m;        sec = s;}void display(Time&t){        cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;}/*由于声明了display Timedisplay是Time  friend函数,所以Time display函数可以引用Time  display  Time中的私有成员 hour,minute,sec。  但注意在引用这些私有数据成员  hour,minute,sec时,必须加上对象名,不能写成  cout<<hour<<′′:′′<<minute<<′′:′′<<sec<<endl;  */int main(){        Time t1(10,13,56);        display(t1);        return 0;}
View Code

  

【2】一个函数(包括普通函数和成员函数)可以被多个
  类声明为“朋友”,这样就可以引用多个类中的私有
  数据

#include<iostream>using namespace std;class Date;class Time{        public:                Time(int,int,int);                void display(Date &);//display 是成员函数,形式参数date类的        private:                int hour;                int minute;                int sec;};class Date{        public:                Date(int,int,int);                friend void Time::display(Date&);//声明time中的display函数为友元函数        private:                int month;                int day;                int year;};Time::Time(int h,int m,int s){        hour = h;        minute = m;        sec = s;}void Time::display(Date &d){        cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;//引用date类的私有数据        cout<<hour<<":"<<minute<<":"<<sec<<endl;//引用本类中的私有数据}Date::Date(int m,int d,int y){        month = m;        day = d;        year = y;}int main(){        Time t1(10,13,56);        Date d1(12,25,2004);        t1.display(d1);        return 0;}
View Code

 

友元比较好的博客推荐: