[C++]友元

版权声明:本文为博主原创文章,转载请注明转载地址 https://blog.csdn.net/u013377887/article/details/80462287

C++中的友元既可以实现友元函数,也可以实现友元类.

C++的 友元类的所有方法都可以访问原始类的私有成员和保护成员。
也可以做更加严格的限制,只有特定的成员函数指定为另一个类的友元,即 友元类
#include <iostream>  
#include <cstring>  
using namespace std ;  
//声明教师类   
class Techer ;  //forward-declaration
//学生类   
class Student   
{  
    private:  
        string name ;  
        int age ;     
        char sex ;   
        int score ;   
    public :  
        Student(string name , int age , char sex , int score);  
        void stu_print(Techer &tech);  
};  
//教师类   
class Techer  
{  
    private:  
        string name ;  
        int age ;     
        char sex ;   
        int score ;   
    public :  
        Techer(string name , int age , char sex , int score);  
        //声明一个友元类  
        friend Student ; //决定那个类是Tech的友元 
};  
  
//Student类的构造函数的实现   
Student::Student(string name , int age , char sex , int score)  
{  
    this->name = name ;   
    this->age = age ;   
    this->sex = sex ;   
    this->score = score ;  
}  
//Techer类的构造函数的实现  
Techer::Techer(string name , int age , char sex , int score)  
{  
    this->name = name ;   
    this->age = age ;   
    this->sex = sex ;   
    this->score = score ;  
}  
  
//打印Student类中的私有成员和Techer的私有成员   
void Student::stu_print(Techer &tech)  
{  
    //用this指针访问本类的成员   
    cout << this->name << endl ;   
    cout << this->age << endl ;   
    cout << this->sex << endl ;   
    cout << this->score << endl ;  
    //访问Techer类的成员   
    cout << tech.name << endl ;  
    cout << tech.age << endl ;   
    cout << tech.sex << endl ;   
    cout << tech.score << endl ;  
}  
  
int main(void)  
{  
    Student stu1("YYX",24,'N',86);  
    Techer t1("hou",40,'N',99);  
    stu1.stu_print(t1);  
    return 0 ;  
}  

结果:

YYX
24
N
86
hou
40
N
99

猜你喜欢

转载自blog.csdn.net/u013377887/article/details/80462287