1.概述
①友元:是定義一個類是,該主動聲明哪些其他類或函數是它的朋友,進而給他們定向提供對類的訪問特權。
②友元是C++提供的一種破壞數據封裝和數據隱藏的機制。
③通過友元將一個模塊聲明為另一個模塊的友元,一個模塊能夠引用到另一個模塊中本是被隱藏的信息。
④可以使用友元函數和友元類。
建議:為了確保數據完整性,及數據封裝與隱藏原則,建議盡量不使用或少使用。
2、友元函數
①友元函數是在類的聲明中由關鍵字friend修飾說明的非成員函數,在它的函數體中能通過對象名訪問 private和protected 成員。
②作用:增加靈活性,使程序員可以在封裝和快速性方面做合理選擇。
③訪問對象中的成員必須通過對象名。
④友元是單向的。
友元函數的定義方法(以定義一個Point類為例)
(該函數傳入引用,節約工耗)
此時,就會遇到在函數中改變對象私有信息的危險,破壞數據的封裝。
例如:
輸出:
對比原先的輸出:
如果想防止對象的私有數據被更改 , 可以在傳入引用時 加 const修飾 例如:
這樣 在函數中再想更改對象的私有數據時就會報錯,例如:
至於const的用法 相信大家都見過了,在后面的博客中會加以補充。