一般来说,在类的外头一般只能直接访问类的共有(public)成员,不能访问私有(private)成员和保护(protected)成员 ,那么如果我们要在某个函数内调用类的那些成员就只能使用友元。
可以看到你试图访问时编译器会报错。
友元的分类:
1、友元函数
2、友元类
3、友元成员函数
友元函数和友元类:
这俩十分简单,只需要在建立友元的;类里面,写一个friend来这样修饰就行了。(位置没有任何要求,放在private:这些后面也行,放在前面可以方便找)
这样描述之后,被描述的函数和类(前提是他们存在)就可以愉快的开始随便访问类的私有(private)成员和保护(protected)成员了。
你问Date类从哪里来?当然是传进去或者在里面定义一个呀!
就像这样来用:
int print(Date& s) {
cout << s.b;
s.c = 12;//想咋访问咋访问
return 0;
}
只不过这里函数的声明必须和对应的函数声明完全相同(参数也是),不然就找不到对应的函数了(因为重载了)。
友元成员函数:
这个只是稍微复杂一点,同样只是对函数的一个修饰,只是描述类成员函数的过程:
同样Date类和成员函数myprint,也是必须存在。不然报错。
好了本篇文章到此结束,如有错误欢迎指出。