友元函數
阿新 • • 發佈:2017-10-08
clu sin cout blog 一個 使用 mes 友元 div
#include<iostream> using namespace std; class Box { double width; public: friend void printWidth(Box box); void setWidth(double wid); }; //類的友元函數,定義在類外部,用::作用域限定符 //有權訪問類的所有私有和保護成員,在類中定義,用friend表示 //不是成員函數 void Box::setWidth(double wid) { width=wid; } //printWidth()不是任何類的成員函數 voidprintWidth(Box box) { cout<<"Width of box"<<box.width<<endl; } int main() { Box box; box.setWidth(10.0); printWidth(box); return 0; }
一個類中可以有 public、protected、private 三種屬性的成員,通過對象可以訪問 public 成員,只有本類中的函數可以訪問本類的 private 成員。
而友元則是一個外設,借助友元(friend),可以使得其他類中的成員函數以及全局範圍內的函數訪問當前類的 private 成員。
以前的一個笑話,說你的私處父母子女不能摸,孩子也不能摸,只有你的"朋友"可以觸碰,就是這個吧。
在友元類中,友元的關系是單向的而不是雙向的。且不能傳遞。
友元函數不同於類的成員函數,在友元函數中不能直接訪問類的成員,必須要借助對象。
成員函數可以定義在類定義內部,或者在類的外部單獨使用範圍解析運算符 :: 來定義。在類定義中定義的成員函數把函數聲明為內聯的,即便沒有使用 inline 標識符。
定義類的成員函數時候,在 :: 運算符之前必須使用類名。調用成員函數是在對象上使用點運算符(.)
友元函數