友元
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;} 复制代码
文章评论(0条评论)
登录后参与讨论