C++ friend友元函数和友元类

1.什么是友元?

一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。

2.friend function友元函数

友元函数两点:

  • 在当前类以外定义的、不属于当前类的函数,
  • 在类中声明,但要在前面加 friend 关键字,

这样就构成了友元函数。友元函数可以是不属于任何类的非成员函数,也可以是其他类的成员函数

2.1 将非成员函数声明为友元函数

示例一:

#include 
#include 
class Student{
   
    private:
        char *m_name;
        int m_age;
        int m_score;
    public:
        Student();
        Student(char *name, int age, int score);
        void setname(char * name){
   m_name = name;};
        void setage(int age){
   m_age = age;};
        void setscore(int score){
   m_score = score;};

        char * getname(){
   return m_name;};
        int getage(){
   return m_age;};
        int getscore(){
   return m_score;};
        //友元函数,不属于student
        friend void show(Student *stu);
};
Student::Student(){
   
    m_name = NULL;
    m_age = 0;
    m_score = 0;
    std::cout << "Student (): called" << "\n";
}
采用参数初始化表
Student::Student(char *name, int age, int score):m_name(name), m_age(age), m_score(score){
   
    std::cout << "Student(char *name, int age, int score):called "<< "\n";
}
void show(Student * stu){
   
    std::cout 

你可能感兴趣的:(C++,友元函数,友元类)