1 // display 是一个 是类外定义的 并且 没有用 time 类进行限定的函数 , 它 是 非成员函数 ,不属于任何类
2 // 如果没有 在time类的定义体中 声明display 函数为 friend 函数 他是不能引用 time中的私有成员 hour minute sec的
3 // 现在由于生命了 display 是time类 friend 函数 所以 display 函数可以引用 time 类中的 hour minute sec 但注意在引用这些私有成员的时候 必须加上对象名
4 // 因为 display 不是 time 类的成员函数 他们之间是 friend(朋友关系) 没有 this指针' 是不能默认引用 time类的 成员数据的
5 #include<iostream>
6 using namespace std;
7 class time
8 {
9 public:
10 time(int ,int ,int); // 声明 构造 函数
11 friend void display (time &t); // 声明 dispily 为 time类的 友元函数
12 private:
13 int hour;
14 int minute;
15 int sec;
16 };
17 time::time(int h,int m,int s) // 定义构造函数 , 给hour minute sec赋初值
18 {
19 hour=h;
20 minute=m;
21 sec=s;
22 }
23 void display(time &t) // 这是 普通的函数 ,形参t 是 time类对象的 引用
24 {
25 cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
26 }
27 int main()
28 {
29 time t1(10,13,56);
30 display(t1); // 调用函数 实参t1 是 time 类的 对象
31 return 0;
32 }