c 中可不可以在類中訪問另類的私有成員

時間 2021-08-30 10:38:27

1樓:a羅網天下

c++中可以在一個類中訪問另一個類的私有成員,通過定義友元類即可實現。

class node

public:

node(int data = 0) :mdata(data), mpnext(null){}

private:

int mdata;

node *mpnext;

friend class link;

友元類本質:

c++提高破壞資料封裝和隱藏的一種機制,將一個類a宣告為另一個類b的友元類,這樣b就可以使用a的私有資料。

一般,為了保證資料的完整性,以及資料的封裝和隱藏原則,建議不用友元。

友元類的特點:友元是單一的,不能傳遞

友元(frend)機制允許一個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友元宣告可以出現在類中的任何地方。

友元不是授予友元關係的那個類的成員,所以它們不受其宣告出現部分的訪問控制影響。通常,將友元宣告成組地放在類定義的開始或結尾是個好主意。

使用友元類優點:

1、可以靈活地實現需要訪問若干類的私有或受保護的成員才能完成的任務;

2、便於與其他不支援類概念的語言(如c語言、彙編等)進行混合程式設計;

3、通過使用友元函式過載可以更自然地使用c++語言的io流庫。

2樓:風翼殘念

可以,只要定義該類為另一個類的友元類即可。

友元類:

class a

friend class b

private:    int aa;

class b

public:

void output()

cout << a.aa << endl;

private:    a a;

使用友元類時:

(1) 友元關係不能被繼承。

(2) 友元關係是單向的,不具有交換性。若類b是類a的友元,類a不一定是類b的友元,要看在類中是否有相應的宣告。

(3) 友元關係不具有傳遞性。若類b是類a的友元,類c是b的友元,類c不一定是類a的友元,同樣要看類中是否有相應的申明。

3樓:風若遠去何人留

可以,只要定義該類為另一個類的友元類即可。

設定類a帶有私有的整型元素a:

class a

;同時存在類b,訪問a中的a元素。

class b

};這時進行編譯會出錯,因為b無法訪問a的私有元素,要解決這個問題,需要宣告b為a的友元類,方法為在a的定義中新增友元類宣告。具體如下:

class a;

4樓:匿名使用者

如果類a把類b宣告為自己的友元類,那麼在類b中的所有函式中都可以訪問類a的私用和保護成員。

如果類a把類b的某個成員函式宣告為自己的友元函式,那麼在類b中的這個函式中都可以訪問類a的私用和保護成員,其它函式不可以訪問。

如果類a把類b的某個函式宣告為自己的友元函式,那麼在這個函式中都可以訪問類a的私用和保護成員。

5樓:愛你在那年冬季

可以的 但是你定義 友元(friend)1,,比如你要在b類中訪問a類的私有成員

2,那就在b類中定義a類的友元函式

3,這就可以直接訪問了

6樓:

類最大的好處就是,有選擇的訪問許可權的設定,對於public 和 protected 型的函式可以被呼叫,而 private 型的函式和變數是被保護的 不可以被外部函式訪問呼叫

7樓:匿名使用者

這是不可以到,要訪問到話,必須先在被訪問的類中將要進行訪問的類宣告為被訪問類到友員,可以在被訪問類到任何地方宣告!

8樓:匿名使用者

不可以,但可以自己寫個get函式返回那個私有成員的值

9樓:匿名使用者

要先設定友元,不然不可以的

c++中可不可以在一個類中訪問另一個類的私有成員

10樓:

不可以,除非在私有成員所在的類中宣告那個類是其 friend 友元類

c++中是否可以用類中的一個物件的成員函式去訪問同類的另一個物件的私有資料

c++中可以定義一個類成為另一個類的私有成員嗎? 10

11樓:匿名使用者

a裡面的public的物件,你在b裡面都可以直接訪問到,其他的protecte和private的,雖然通過friend 方式可以訪問,但是破壞回了類的封答裝性,也沒有必要 ,但如果一定要用,那就暴露一個介面函式訪問吧

12樓:匿名使用者

可以,而且可以通過定義友元來呼叫私有函式

13樓:九霄環佩

可以通過友元函式夫人frend

求歌詞 可不可以可不可以 Xun 的歌詞?

可不可以 是由劉偉鋒作詞 作曲,張紫豪。演唱,張紫豪。說好帶你流浪,而我卻半路返航。墜落自責的海洋,發現離不開你。我開始決定回去,你已不在原地。我可以接受你的所有,所有小脾氣。我可以帶你去吃很多,很多好東西。我可以偶爾給你帶來,帶來小甜蜜。就像前幾年那樣,每天都會給你製造很多驚喜。你的心 傷我能 我...

倉鼠可不可以養在臥室裡,倉鼠可不可以放臥室養?會不會帶病菌

當然可以,我以前就是養在臥室。清除氣味會有點麻煩,不過只要勤勞地更換鋪撒在倉鼠籠子底部的木屑就好了,有賣的,推薦買檸檬氣味的,去除一些倉鼠的氣味,還很乾淨。不過可能倉鼠會把木屑灑出來一點點,嘿嘿 沒關係掃乾淨就好了。還有不要把大袋的鼠糧放臥室,容易生蟲,我買的生過蟲 幸好放在陽臺,驅蟲也很簡單,用盤...

紋眉後可不可以洗掉,紋眉的可不可以當兵?

景瑞美業 紋眉可以洗掉的,目前最常用的方法是鐳射洗眉。一 鐳射洗眉的原理 由於特定波長的鐳射能通過表皮及真皮達到病變的色素組織,只對色素顆粒發揮作用,所以 的表皮極少損傷甚至沒有損傷,對 的紋理無明顯的傷害,因此 上不會留疤痕。不同波長的鐳射,可以選擇性的吸收皮內的黑色 藍色 綠色 褐色 紅色 棕色...