友元函数 友元类 及用法
友元函数可以修改访问类内部的私有成员,
友元函数的参数之一是类元素,类指针或者是类引用,意思是修改某个对象中的类私有成员(对象一般是访问不了类私有成员的).
若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"); }