Dalam C++, fungsi statik tidak boleh mengakses fungsi ahli bukan statik secara langsung. Penyelesaian termasuk: 1. Akses melalui penunjuk objek 2. Akses melalui operator skop kelas.
Fungsi statik dalam C++ mengakses fungsi ahli bukan statik
Dalam C++, fungsi statik ialah fungsi ahli khas yang tidak dikaitkan dengan mana-mana objek khusus dalam kelas. Ini bermakna fungsi statik tidak boleh mengakses secara langsung fungsi ahli bukan statik (iaitu fungsi ahli biasa).
Walau bagaimanapun, had ini boleh diselesaikan dalam dua cara berikut:
1 Akses melalui penunjuk objek:
Buat penunjuk objek ke kelas semasa, dan kemudian gunakan penuding untuk mengakses fungsi ahli bukan statik. . Contohnya:
class MyClass { public: static void staticFunction() { MyClass* obj = new MyClass(); obj->nonStaticFunction(); delete obj; } void nonStaticFunction() { // ... } };
2 Akses melalui skop kelas:
Jika fungsi ahli bukan statik adalah public
的,则可以通过类作用域运算符 (::
) 进行访问。例如:
class MyClass { public: static void staticFunction() { MyClass::nonStaticFunction(); } static void nonStaticFunction() { // ... } };
实战案例:
假设我们有一个 Student
类,其中包含一个成员函数 getGrade()
和一个静态函数 printGrade()
。 printGrade()
需要能够访问 getGrade()
来打印学生的成绩。
class Student { public: int grade; void getGrade() { // 获取学生的成绩 } static void printGrade(Student* student) { student->getGrade(); // 通过对象指针访问非静态成员函数 } static void printGrade() { Student student; student.getGrade(); // 通过类作用域访问非静态成员函数 } };
在这种情况下,printGrade()
既可以通过对象指针又可以通过类作用域来访问 getGrade()
rrreee
Pelajar
, yang mengandungi fungsi ahli getGrade()
dan fungsi statik printGrade ( )
. printGrade()
memerlukan akses kepada getGrade()
untuk mencetak gred pelajar. 🎜rrreee🎜Dalam kes ini, printGrade()
boleh diakses melalui penuding objek dan getGrade()
melalui skop kelas. 🎜Atas ialah kandungan terperinci Bolehkah fungsi statik C++ mengakses fungsi ahli bukan statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!