Rumah >pembangunan bahagian belakang >C++ >Bolehkah Ahli C Menjadi Statik dan Maya?

Bolehkah Ahli C Menjadi Statik dan Maya?

DDD
DDDasal
2024-10-30 19:09:30497semak imbas

Can C   Members Be Both Static and Virtual?

Bolehkah Ahli C Menjadi Statik dan Maya?

Dalam C , ahli tidak boleh diisytiharkan secara statik dan maya. Menyusun pengisytiharan seperti ahli maya statik (); akan mengakibatkan ralat.

Walau bagaimanapun, anda boleh mencapai kesan yang sama menggunakan kaedah berikut:

  • Fungsi Asing: Tentukan fungsi statik dan bukan -fungsi maya statik dengan nama yang sama. Fungsi bukan maya boleh dipanggil terus pada kelas atau ditindih dalam kelas terbitan, manakala fungsi statik menyediakan akses kepada pelaksanaan kelas asas.
  • Fungsi Terlebih Beban: Isytiharkan fungsi terlampau beban dengan nama yang sama (satu statik dan satu maya bukan statik). Pengkompil akan memilih fungsi yang sesuai berdasarkan konteks panggilan.

Berikut ialah contoh:

<code class="cpp">struct Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const;
};

struct SomeObject : public Object
{
    static const TypeInformation& GetTypeInformation();
    virtual const TypeInformation& GetTypeInformation() const override;
};</code>

Ini membolehkan anda memanggil GetTypeInformation() kedua-duanya pada objek (objek-> ;GetTypeInformation()) dan pada kelas (SomeObject::GetTypeInformation()). Object::GetTypeInformation() akan mengembalikan pelaksanaan kelas asas, manakala SomeObject::GetTypeInformation() akan memanggil versi yang diganti.

Atas ialah kandungan terperinci Bolehkah Ahli C Menjadi Statik dan Maya?. 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