在 C 中,友元函數可以宣告在類別外,但必須緊鄰類別的定義,用 friend 關鍵字開頭,不受類別作用域的限制。
C 友元函數可以在類別外宣告嗎?
前言
友元函數是在類別外存取類別私有/保護成員的特殊函數。它們在類別的定義之外聲明。本篇文章將討論 C 中友元函數的類別外宣告規則,並提供實戰案例進行說明。
類別外宣告規則
在C 中,友元函數可以宣告在類別的外部,但需要注意以下規則:
friend
關鍵字開頭。 實戰案例
下面是一個展示友元函數類別外宣告的實戰案例:
// 类 Person 定义 class Person { private: std::string name_; // 私有成员变量 public: Person(const std::string& name) : name_(name) {} }; // 友元函数声明(在 Person 类外) friend std::ostream& operator<<(std::ostream& os, const Person& person); // 主函数 int main() { Person p("John Doe"); std::cout << p << std::endl; // 调用友元函数 } // 友元函数定义(在 Person 类外) std::ostream& operator<<(std::ostream& os, const Person& person) { os << person.name_; return os; }
程式碼解釋
在這個範例中:
Person
類別定義包含一個私有成員變數name_
。 operator<<
函數宣告為 Person
類別的友元函數,並置於類別的定義之後。 Person
物件並輸出其 name_
值,這需要呼叫友元函數。 name_
私有成員變數並輸出它的值。 結論
C 中的友元函數可以在類別的外部聲明,但必須緊鄰類別的定義並使用 friend
關鍵字。友元函數的宣告不受類別作用域的限制,從而提供了在類別外存取私有成員的靈活性。為了清晰和可讀性,建議在類別的定義附近聲明友元函數。
以上是C++ 友元函數可以在類別外宣告嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!