友元類 及用法

2021-06-16 21:13:34 字數 3115 閱讀 3941

********************===什麼是友元類********************===

當乙個類b成為了另外乙個類a的「朋友」時,那麼類a的私有和保護的資料成員就可以被類b訪問。我們就把類b叫做類a的友元。

********************===友元類能做什麼********************===

友元類可以通過自己的方法來訪問把它當做朋友的那個類的所有成員。但是我們應該注意的是,我們把類b設定成了類a的友元類,但是這並不會是類a成為類b的友元。說白了就是:甲願意把甲的秘密告訴乙,但是乙不見得願意把乙自己的秘密告訴甲。

********************===友元類的宣告方法和其用法********************===

宣告友元類的方法其實很簡單,只要我們在類a的成員列表中寫下如下語句:

?

friendclassb;

》中的包含是完全不一樣的!

********************===友元類的乙個具體例子********************===

在這裡,我們引用乙個我從網上收集到的例子來說明友元類的作用:假設我們要設計乙個模擬電視機和遙控器的程式。大家都之道,遙控機類和電視機類是不相包含的,而且,遙控器可以操作電視機,但是電視機無法操作遙控器,這就比較符合友元的特性了。即我們把遙控器類說明成電視機類的友元。下面是這個例子的具體**:

?

#include

usingnamespacestd;

classtv

private:

enum;

enum;

enum;

enum;

boolon_off;

intvolume;

intchannel;

intmode;

};

classtele

voidsetmode(tv&t)

boolvolumeup(tv&t);

boolvolumedown(tv&t);

boolchannelup(tv&t);

boolchanneldown(tv&t);

voidshow(tv&t)const;

};

booltele::volumeup(tv&t)

else

}

booltele::volumedown(tv&t)

else

}

booltele::channelup(tv&t)

else

}

booltele::channeldown(tv&t)

else

}

voidtele::show(tv&t)const

else

}

intmain()

我們在程式的第6行定義了乙個tv電視機類的友元類tele。那麼程式中就可以來呼叫tv類中的私有成員。下面,是該程式的輸出:

好了,這就是友元類了。關於友元類,我反正是這樣認為的,因為友元類有可能會破壞資料的安全性,我們還是少用為好啊!在這裡我只是記錄一下它的用法罷了,呵呵

友元函式及友元類詳解

在 c 中,乙個類中可以有 public protected private 三種屬性的成員,通過物件可以訪問 public 成員,只有本類中的函式可以訪問本類的 private 成員。現在,我們來介紹一種例外情況 友元 friend 借助友元 friend 可以使得其他類中的成員函式以及全域性範圍...

友元類的用法

2010 12 02 23 16 30 分類 學習 標籤 友元類的用法 字型大小大中小 訂閱 定義 class b friend class a 將導致b無法被除a以外的其它任何class直接繼承以後例項化,也就是說,在上面這個定義的基礎上,如果你在定義 class c public b 將導致編譯...

類 友元函式 友元類

友元函式不是當前類的成員函式,但它可以訪問該類所有的成員,包括私有成員 保護成員和公有成員。在類中宣告友元函式時,需在其函式名前加上關鍵字 friend。友元函式既可以是非成員函式,也可以是另乙個類的成員函式。class date date date int y,int m,int d void s...