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

Patricia Arquette
Lepaskan: 2024-11-06 03:51:02
asal
264 orang telah melayarinya

Can You Call a Static Member Method on a Class Instance in C  ?

Invokasi Kaedah Ahli Statik C pada Contoh Kelas

Dalam C , kaedah ahli statik biasanya dipanggil menggunakan nama kelas itu sendiri, bukannya contoh kelas. Walau bagaimanapun, timbul persoalan: bolehkah kaedah ahli statik digunakan pada kejadian kelas?

Coretan kod yang diberikan menunjukkan tingkah laku yang menarik:

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...
}
Salin selepas log masuk

Pada Visual Studio 2008 SP1, kod ini berjaya menyusun dan mengeluarkan "TEST IT!". Bertentangan dengan jangkaan biasa, kaedah statik nampaknya digunakan pada contoh kelas.

1. Adakah Anda Salah? Adakah Kod Betul?

Berdasarkan piawaian C, memanggil kaedah ahli statik pada tika adalah tidak betul. Standard secara eksplisit menyatakan dalam 9.4 (Static Members):

"Ahli statik kelas X boleh dirujuk menggunakan ungkapan qualified-id X::s; ia tidak perlu menggunakan sintaks akses ahli kelas (5.2.5) untuk merujuk kepada ahli statik."

Dalam erti kata lain, ia bukan satu keperluan untuk menggunakan nama kelas untuk mengakses ahli statik. Sintaks akses ahli kelas dibenarkan, tetapi ungkapan objek dinilai dalam kes itu.

2. Mengapa Ini Dibenarkan?

Standard membenarkan ahli statik digunakan pada kejadian untuk memudahkan penggunaan kaedah "statik atau tidak" dalam templat. Templat selalunya memerlukan keupayaan untuk memanggil fungsi tanpa mengetahui sama ada ia statik atau tidak. Dengan membenarkan seruan ahli statik pada kejadian, pengkompil sentiasa boleh menentukan fungsi yang betul untuk dipanggil, tanpa mengira status statiknya.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!