• 友元函数 友元类 及用法


    友元函数可以修改访问类内部的私有成员,

    友元函数的参数之一是类元素,类指针或者是类引用,意思是修改某个对象中的类私有成员(对象一般是访问不了类私有成员的).

    若F类是A类的友元类,那么F类的所有成员函数都是A类的友元函数,在F类里声明一个A类的对象a,在F类内部,这个对象a可以直接访问A类的私有成员.

    友员类通常设计为一种对数据操作或类之间传递消息的辅助类

    #include "iostream"
    using namespace std;
    
    class A1
    {
    public:
    	A1()
    	{
    		a1 = 100;
    		a2 = 200;
    	}
    	int getA1()
    	{
    		return this->a1;
    	}
    	//声明一个友元函数
    	friend void setA1(A1 *p, int a1); //什么这个函数是这个类的好朋友
    	
    protected:
    private:
    	int a1;
    	int a2;
    };
    
    void setA1(A1 *p, int a1)
    {
    	p->a1 = a1;
    }
    //friend 破坏了类的封装性。。。。
    //friend关键字是一个关系户
    //why 无奈之际 java class
    //java---》1.class==》class==>java类
    //java类的反射 sun jdk api
    
    //cc++ 1预编译gcc -E 2汇编 gcc -i 3编译gcc -c 3、链接ld ===》汇编代码
    //friend 
    //应用场景。。。。。
    //const关键字 冒牌货c
    //register
    //typedef 混号王 
    
    void main11()
    {
    	A1 mya1;
    	cout<<mya1.getA1()<<endl;
    	setA1(&mya1, 300);
    	cout<<mya1.getA1()<<endl;
    
    	system("pause");
    }
    
    class A
    {
    	//b是a的好朋友	
    	friend class B;
    public:
    	void display()
    	{
    		cout<<x<<endl;
    	}
    
    protected:
    private:
    	int x;
    };
    
    class B
    {
    public:
    	void setA(int x)
    	{
    		Aobj.x = x;
    	}
    	void printA()
    	{
    		cout<<Aobj.x<<endl;
    	}
    protected:
    private:
    	A Aobj;
    
    };
    
    void main()
    {
    	B b1;
    	b1.setA(100);
    	b1.printA();
    	system("pause");
    }
    

      

  • 相关阅读:
    自定义Toast
    kafka概念扫盲
    ZooKeeper面试题
    写给程序员儿子的一封信
    hashCode() 和 equals()的问题解答及重写示范
    git下载安装、配置及idea初始化
    配置 git公钥报错:unknown key type -rsa
    Java中的各种锁
    Kafka 基本原理
    MySQL 索引总结
  • 原文地址:https://www.cnblogs.com/c-slmax/p/5183930.html
Copyright © 2020-2023  润新知