友元類和java的反射機制作用差不多,打破類的封裝性。
#include "stdafx.h"#include"iostream"using namespace std;class A {PRivate: friend class B; //B類是A的友元,在B中可以訪問A類的私有成員 friend void modifyA(A *pA, int _a);//友元函數 int x;public: int getX() { return this->x; }};class B {public: void set(int a) { obj.x = a; } void print() { cout << obj.x << endl; }private: A obj; };void modifyA(A *pA, int _a) { pA->x = _a;}int main(){ B objB; objB.set(100);//友元類修改私有屬性 A objA; //創建一個A類對象,B類中也產生了A類對象 objB.print(); modifyA(&objA,12);//友元函數修改A對象的私有屬性 cout << objA.getX()<< endl; system("pause"); return 0;}新聞熱點
疑難解答
圖片精選