Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Memanggil Kaedah Ahli Statik pada Contoh Kelas dalam C?

Bolehkah Anda Memanggil Kaedah Ahli Statik pada Contoh Kelas dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-05 20:57:02130semak imbas

Can You Call Static Member Methods on Class Instances in C  ?

Memanggil Kaedah Ahli Statik pada Kejadian Kelas

Dalam C , kaedah ahli statik boleh dipanggil secara terus atau melalui tika kelas. Tingkah laku ini mungkin menimbulkan persoalan mengenai jangkaan piawai untuk penggunaan kaedah ahli statik.

Piawaian C secara eksplisit menyatakan bahawa kaedah ahli statik boleh dipanggil tanpa contoh. Walau bagaimanapun, ini tidak menghalang kemungkinan memanggil mereka melalui contoh.

Pertimbangkan contoh kod berikut:

class Test {
public:
    static void DoCrash() { std::cout << "TEST IT!" << std::endl; }
};

int main() {
    Test k;
    k.DoCrash(); // calling a static method like a member method...
}

Dalam contoh ini, kaedah statik DoCrash() digunakan pada contoh kelas Ujian (k). Anehnya, kod ini menyusun dan berjalan tanpa ralat, memaparkan "TEST IT!".

Mengapa ini Dibenarkan?

Standard membenarkan panggilan kaedah ahli statik melalui contoh untuk beberapa sebab:

  • Ketekalan: Ia membenarkan akses yang konsisten kepada kedua-dua kaedah ahli statik dan bukan statik.
  • Sokongan Templat: Ia membolehkan penulisan kod generik yang boleh berfungsi sama ada dengan kaedah statik atau bukan statik.
  • Sebab Sejarah: Pada asalnya, C membenarkan akses terus kepada ahli statik melalui kejadian, dan tingkah laku ini ialah dipelihara untuk mengekalkan keserasian kod warisan.

Mata Tambahan

Walaupun memanggil kaedah ahli statik melalui kejadian dibenarkan, ia biasanya tidak digalakkan. Ini kerana ia boleh menyebabkan kekeliruan dan tingkah laku yang tidak dijangka, terutamanya apabila kod dikemas kini atau diubah suai. Untuk kejelasan dan ketepatan, lebih disukai untuk memanggil kaedah ahli statik secara langsung menggunakan nama kelas, seperti dalam Test::DoCrash().

Atas ialah kandungan terperinci Bolehkah Anda Memanggil Kaedah Ahli Statik pada Contoh Kelas dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn