Rumah >pembangunan bahagian belakang >C++ >Bolehkah Fungsi C Menjadi Kedua-dua Statik dan Maya?

Bolehkah Fungsi C Menjadi Kedua-dua Statik dan Maya?

Barbara Streisand
Barbara Streisandasal
2024-11-01 00:21:28815semak imbas

Can C   Functions Be Both Static and Virtual?

Bolehkah Fungsi C Menjadi Kedua-dua Statik dan Maya?

Walaupun nampaknya wajar untuk mempunyai fungsi ahli yang statik dan maya, C tidak menawarkan cara langsung untuk mencapai ini. Semasa mengisytiharkan fungsi sebagai ahli maya statik() akan mengakibatkan ralat kompilasi, terdapat pendekatan alternatif untuk mensimulasikan tingkah laku yang diingini:

Melaksanakan Fungsi Maya Bukan Statik:

Penyelesaian yang paling mudah ialah mencipta fungsi maya bukan statik. Ini membolehkan fungsi dipanggil pada kedua-dua kejadian dan kelas:

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

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

Fungsi Bukan Maya Statik Berlebihan:

Jika memanggil versi kelas terbitan tertentu bukan- hampir tanpa contoh objek diperlukan, fungsi bukan maya statik berlebihan boleh disediakan:

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

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

Fungsi dan Pendekatan Malar:

Pilihan lain ialah menggunakan fungsi dan pemalar berasingan untuk setiap kelas:

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

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

Kesimpulan:

Walaupun C tidak menyokong ahli maya statik secara asli, fungsi maya bukan statik atau fungsi statik berlebihan menyediakan alternatif yang berdaya maju untuk mencapai fungsi yang serupa. Pilihan pendekatan bergantung pada keperluan khusus aplikasi.

Atas ialah kandungan terperinci Bolehkah Fungsi C Menjadi Kedua-dua 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