Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda boleh mencapai pengkhususan separa fungsi ahli dalam kelas templat dalam C?

Bagaimanakah anda boleh mencapai pengkhususan separa fungsi ahli dalam kelas templat dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 10:46:03602semak imbas

How can you achieve partial specialization of a member function within a template class in C  ?

Pengkhususan Separa Fungsi Ahli Kelas

Tidak seperti fungsi biasa, pengkhususan sebahagiannya hanya fungsi ahli dalam kelas templat tidak dibenarkan dalam C . Sebaliknya, adalah perlu untuk mengkhususkan sebahagian keseluruhan kelas.

Untuk mencapai pengkhususan separa fungsi ahli, langkah berikut perlu diambil:

  1. Isytiharkan kelas templat khusus sepenuhnya untuk nilai khusus parameter templat yang memerlukan fungsi ahli khusus.
  2. Dalam templat kelas khusus, tentukan fungsi ahli yang diingini.

Contohnya, untuk mencipta pengkhususan separa untuk fungsi ahli Deform() dalam kod yang diberikan dengan nValue sama dengan 0, kod berikut menunjukkan cara untuk membetulkan kod asal:

// Partial specialization of the Object class for nValue = 0
template <>
class Object<int, 0>
{
private:
    int m_t;
    Object();
public:
    Object(int t): m_t(t) {}
    int Get() { return m_t; }
    Object& Deform()
    {
        std::cout << "Specialized\n";
        m_t = -1;
        return *this;
    }
};

Dengan pengubahsuaian ini, kod kini akan mengkhususkan sebahagiannya dengan betul Deform() fungsi ahli untuk nValue bersamaan dengan 0.

Atas ialah kandungan terperinci Bagaimanakah anda boleh mencapai pengkhususan separa fungsi ahli dalam kelas templat 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