原创 C++----友元

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

    文章评论0条评论)

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