Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Nama Fungsi dalam Warisan C?

Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Nama Fungsi dalam Warisan C?

Patricia Arquette
Lepaskan: 2024-12-21 16:02:10
asal
941 orang telah melayarinya

How Can I Resolve Function Name Collision in C   Inheritance?

Perlanggaran Fungsi dalam Kelas Terbitan

Apabila mentakrifkan fungsi dengan nama yang sama tetapi tandatangan berbeza dalam kelas asas dan kelas terbitannya, a Isu carian nama boleh timbul.

Pertimbangkan perkara berikut kod:

class A
{
public:
    void foo(string s){};
};

class B : public A
{
public:
    int foo(int i){};
};

class C : public B
{
public:
    void bar()
    {
        string s;
        foo(s);
    }
};
Salin selepas log masuk

Dalam contoh ini, pengkompil menimbulkan ralat apabila cuba mengakses fungsi foo() daripada kelas asas A dalam fungsi bar() kelas C. Ini kerana pencarian nama mengutamakan pencarian fungsi dalam kelas paling terdekat, dalam kes ini, B, dan mengabaikan fungsi yang ditindih dalam A.

Untuk menyelesaikan isu ini, kelas terbitan B mesti mengisytiharkan secara eksplisit fungsi yang diganti menggunakan arahan penggunaan:

class B : public A
{
public:
    int foo(int i){};
    using A::foo;
};
Salin selepas log masuk

Dengan menggunakan arahan penggunaan, B memperkenalkan semula fungsi foo() secara berkesan daripada A ke dalam skopnya sendiri, menjadikannya kelihatan kepada terbitan berikutnya kelas seperti C.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Perlanggaran Nama Fungsi dalam Warisan 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