C++复习第二天 友元

来源:互联网 发布:淘宝买家怎么贷款啊 编辑:程序博客网 时间:2024/05/23 21:30

友元(走后门!)

 

C++中控制类对象私有部分的访问,但有时候需要在类的外部访问类的私有成员,这种情况下C++提供了友元机制。

#include <iostream>//原文地址:http://blog.csdn.net/oyhb_1992/article/details/78010362using namespace std;class demo0; //前置声明class demo{private:    int i;//只能在类的内部访问public:    demo()//构造函数    {        cout << "demo" << this <<endl;    }    demo(const demo &it)//拷贝构造    {        this->i = it.i;//一旦自己实现了拷贝构造函数,类成员之间的赋值就需要自己完成,编译器不管了        cout << "copy demo" << this << endl;    }    ~demo()//析构    {        cout << "~demo" << this << endl;    }    void set_i(int i)    {        this->i = i;    }    int get_i()    {        return i;    }    friend void test();//意思是声明一个该类的友元函数,给test函数开后门    friend class demo1;//意思是声明一个该类的友元类    friend class demo0;//demo 和demo0互为朋友};void test()//对于test来讲可以自由的访问demo当中的任意成员{    demo d;    d.i = 100;//友元函数访问私有变量}class demo0{private:    i;public:    demo1()    {        demo d;        d.i = 100;//友元类访问私有成员变量    }};class demo1{public:    demo1()    {        demo d;        d.i = 100;    }    friend class demo2;};//我的朋友的朋友,不会是我的朋友,友元不能class demo2{public:    demo2()    {        demo d;//demo2不一定是demo的朋友,不能访问        d.i = 100;    }};//demo2是demo1的朋友,demo1是demo的朋友,但是demo2不一定是demo的朋友//demo 和demo0互为朋友。他们之间可以互相访问int main(){    test();    cout << "Hello World!" << endl;    return 0;}


原创粉丝点击