Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mewarisi Pembina dalam C?

Bagaimanakah Saya Boleh Mewarisi Pembina dalam C?

Linda Hamilton
Lepaskan: 2024-12-25 15:30:10
asal
636 orang telah melayarinya

How Can I Inherit Constructors in C  ?

Mewarisi Pembina

Coretan kod yang anda berikan:

class A
{
    public:
        explicit A(int x) {}
};

class B: public A
{
};

int main(void)
{
    B *b = new B(5);
    delete b;
}
Salin selepas log masuk

menghasilkan ralat apabila disusun dengan GCC kerana ia kekurangan pembina yang sepadan untuk B(int). Walaupun anda mungkin menjangkakan B akan mewarisi pembina A, ini tidak berlaku secara lalai dalam C .

Dalam C 11 dan kemudian, ciri baharu yang dipanggil warisan pembina menggunakan menggunakan telah diperkenalkan. Dengan menambah menggunakan A::A; dalam kelas B, anda boleh mewarisi semua pembina A secara eksplisit.

class A
{
    public:
        explicit A(int x) {}
};

class B: public A
{
     using A::A;
};
Salin selepas log masuk

Walau bagaimanapun, pewarisan pembina ialah konsep semua atau tiada. Anda tidak boleh secara selektif mewarisi pembina tertentu sahaja. Jika anda cuba berbuat demikian, anda perlu mentakrifkan pembina yang dikehendaki secara manual dan secara eksplisit memanggil pembina asas daripada setiap pembina.

Dalam C 03 dan lebih awal, pewarisan pembina tidak disokong. Pembina perlu diwarisi secara manual dengan memanggil pembina asas secara individu dalam setiap pembina kelas terbitan.

Untuk kelas asas templat, anda boleh menggunakan sintaks templat untuk mewarisi semua pembina. Contohnya:

template<class T>
class my_vector : public vector<T> {
    public:
    using vector<T>::vector; ///Takes all vector's constructors
    /* */
};
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mewarisi Pembina 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