友元——友元可以访问与其有好友关系的类中的私有成员。 友元包括友元函数和友元类。
简介:友元可以访问与其有好友关系的类中的私有成员。
友元包括友元函数和友元类。
【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; }
【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; }
友元比较好的博客推荐: