1. 程式人生 > >友元函數

友元函數

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()不是任何類的成員函數
void
printWidth(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 標識符。

定義類的成員函數時候,在 :: 運算符之前必須使用類名。調用成員函數是在對象上使用點運算符(.

友元函數