Dalam C++, fungsi rakan boleh diisytiharkan di luar kelas, tetapi ia mesti bersebelahan dengan takrif kelas, bermula dengan kata kunci rakan, dan tidak dihadkan oleh skop kelas.
Bolehkah fungsi rakan C++ diisytiharkan di luar kelas?
Preface
Fungsi rakan ialah fungsi khas yang mengakses ahli peribadi/dilindungi kelas di luar kelas. Mereka diisytiharkan di luar definisi kelas. Artikel ini akan membincangkan peraturan pengisytiharan luar kelas untuk fungsi rakan dalam C++ dan menyediakan kes praktikal untuk digambarkan.
Peraturan pengisytiharan luar kelas
Dalam C++, fungsi rakan boleh diisytiharkan di luar kelas, tetapi anda perlu memberi perhatian kepada peraturan berikut:
rakan
. 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
operator<<
Fungsi diisytiharkan sebagai fungsi rakan kelas Orang
dan diletakkan selepas takrifan kelas. 🎜Dalam fungsi utama, objek Orang
dicipta dan nilai name_
nya adalah output, yang memerlukan panggilan fungsi rakan. 🎜Fungsi rakan juga ditakrifkan di luar kelas Ia mengakses name_
pembolehubah ahli persendirian dan mengeluarkan nilainya. rakan
. Pengisytiharan fungsi rakan tidak dihadkan oleh skop kelas, sekali gus memberikan fleksibiliti untuk mengakses ahli persendirian di luar kelas. Untuk kejelasan dan kebolehbacaan, adalah disyorkan untuk mengisytiharkan fungsi rakan berhampiran definisi kelas. 🎜Atas ialah kandungan terperinci Bolehkah fungsi rakan C++ diisytiharkan di luar kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!