C 之「友元類」學習筆記

2021-06-19 09:06:28 字數 3185 閱讀 8578

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

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

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

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

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

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

friendclassb;

談談:c++類的「包含」機制

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

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

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

#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 之「友元類」學習筆記

什麼是友元類 當乙個類b成為了另外乙個類a的 朋友 時,那麼類a的私有和保護的資料成員就可以被類b訪問。我們就把類b叫做類a的友元。友元類能做什麼 友元類可以通過自己的方法來訪問把它當做朋友的那個類的所有成員。但是我們應該注意的是,我們把類b設定成了類a的友元類,但是這並不會是類a成為類b的友元。說...

C 之「友元類」學習筆記

什麼是友元類 當乙個類b成為了另外乙個類a的 朋友 時,那麼類a的私有和保護的資料成員就可以被類b訪問。我們就把類b叫做類a的友元。友元類能做什麼 友元類可以通過自己的方法來訪問把它當做朋友的那個類的所有成員。但是我們應該注意的是,我們把類b設定成了類a的友元類,但是這並不會是類a成為類b的友元。說...

C 之「友元類」學習筆記

什麼是友元類 當乙個類b成為了另外乙個類a的 朋友 時,那麼類a的私有和保護的資料成員就可以被類b訪問。我們就把類b叫做類a的友元。友元類能做什麼 友元類可以通過自己的方法來訪問把它當做朋友的那個類的所有成員。但是我們應該注意的是,我們把類b設定成了類a的友元類,但是這並不會是類a成為類b的友元。說...