原创 C++----友元

2021-8-21 13:15 1383 8 2 分类: 软件与OS 文集: C++基础
友元
1.含义:可以访问朋友类中的私有成员(变量或函数)
2.友元函数和友元类
1.友元函数
声明格式: friend 返回值类型 函数名(形参表);
1.全局函数作为类的友元函数
例:
  1. #include
  2. using namespace std;
  3. class Student{
  4. private:
  5. string name;
  6. int age;
  7. public:
  8. Student(){}
  9. Student(string n, int a):name(n),age(a){}
  10. friend int print_studnet_info(Student &);
  11. //声明 print_studnet_info 函数是Student类的友元函数
  12. //在友元函数中可以访问 Student 类的私有成员
  13. };
  14. int print_studnet_info(Student &stu){
  15. cout<<stu.name<<" "<<stu.age<<endl;
  16. }
  17. int main(int argc, const char *argv[])
  18. {
  19. Student s1("小明",20);
  20. print_studnet_info(s1);
  21. return 0;
  22. }
2.友元成员函数
(其他类的成员函数作为自己类的友元函数)
例:
  1. </div><div yne-bulb-block="code" data-theme="tomorrow" style="white-space:pre-wrap;" data-language="cpp">#include </div>using namespace std;
  2. class Date;//类的前向声明,说明这个名字后面有
  3. class Time{
  4. private:
  5. int hour;
  6. int sec;
  7. int min;
  8. public:
  9. Time(){}
  10. Time(int h, int s, int m):hour(h),sec(s),min(m){}
  11. void display(const Date &date);//此处只能使用Date的名字,不能使用里面的内容
  12. };
  13. class Date{
  14. private:
  15. int year;
  16. int month;
  17. int day;
  18. public:
  19. Date(){}
  20. Date(int y, int m, int d):year(y),month(m),day(d){}
  21. friend void Time::display(const Date &date);
  22. //声明 Time 类中的 display 函数是 Date 类的友元函数
  23. //然后在 Time 的 display 中就可以访问 Date的私有成员了
  24. };
  25. //必须将函数的定义写在 Date 类定义的后面
  26. //否则 不知道 Date 类中有 year month day 这三个成员
  27. void Time::display(const Date &date){
  28. cout<<date.year<<"-"<<date.month<<"-"<<date.day<<endl;
  29. cout<<hour<<":"<<min<<":"<<sec<<endl;
  30. }
  31. int main(int argc, const char *argv[])
  32. {
  33. Time t(10,5,28);
  34. Date d(2021,8,19);
  35. t.display(d);
  36. return 0;
  37. }

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条