下面給出C++類的友元機制說明(對類private、protected成員訪問),需要注意的是,友元機制盡量不用或者少用,雖然它會提供某種程度的效率,但會帶來資料安全性的問題,
類的友元
友元是C++提供的一種破壞資料封裝和資料隱藏的機制,
通過將一個模塊宣告為另一個模塊的友元,一個模塊能夠參考到另一個模塊中本是被隱藏的資訊,可以使用友元函式和友元類,
為了確保資料的完整性,及資料封裝與隱藏的原則,建議盡量不使用或少使用友元,
友元函式
友元函式是在類宣告中由關鍵字friend修飾說明的非成員函式,在它的函式體中能夠通過物件名訪問 private 和protected成員
作用:增加靈活性,使程式員可以在封裝和快速性方面做合理選擇,
訪問物件中的成員必須通過物件名,
舉例說明:使用友元函式計算兩點間的距離
1 #include <iostream> 2 3 #include <cmath> 4 5 using namespace std; 6 7 class Point 8 {//Point類宣告 9 10 public: //外部介面 11 12 Point(int x=0, int y=0) : x(x), y(y) { } 13 14 int getX() { return x; } 15 16 int getY() { return y; } 17 18 friend float dist(Point &a, Point &b); 19 20 private: //私有資料成員 21 22 int x, y; 23 24 }; 25 26 float dist( Point& a, Point& b) 27 { 28 double x = a.x - b.x; 29 30 double y = a.y - b.y; 31 32 return static_cast<float>(sqrt(x * x + y * y)); 33 34 } 35 36 int main() 37 { 38 39 Point p1(1, 1), p2(4, 5); 40 41 cout <<"The distance is: "; 42 43 cout << dist(p1, p2) << endl; 44 45 return 0; 46 47 }
友元類
若一個類為另一個類的友元,則此類的所有成員都能訪問對方類的私有成員,
宣告語法:將友元類名在另一個類中使用friend修飾說明,

類的友元關系是單向的
如果宣告B類是A類的友元,B類的成員函式就可以訪問A類的私有和保護資料,但A類的成員函式卻不能訪問B類的私有、保護資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261594.html
標籤:C++
上一篇:C++物件的生存期筆記
下一篇:C++共享資料保護機制
