Rumah > pembangunan bahagian belakang > C++ > Adakah Kata Kunci 'maya' Berlebihan Apabila Mengatasi Fungsi Maya dalam Kelas Terbitan C?

Adakah Kata Kunci 'maya' Berlebihan Apabila Mengatasi Fungsi Maya dalam Kelas Terbitan C?

Patricia Arquette
Lepaskan: 2024-12-20 02:35:13
asal
919 orang telah melayarinya

Is the

Fungsi Maya dalam Kelas Terbitan: Adakah Kata Kunci "maya" Berlebihan?

Dalam konteks pengaturcaraan berorientasikan objek C, fungsi maya memainkan peranan penting dalam melaksanakan polimorfisme. Apabila kelas terbitan mengatasi fungsi maya, ia mencipta pelaksanaan baharu tanpa melanggar gelagat kelas asasnya.

Pertimbangkan definisi struct berikut:

struct A {
    virtual void hello() = 0;
};
Salin selepas log masuk

Struktur ini mengisytiharkan maya tulen fungsi bernama hello(). Sekarang, mari kita periksa dua pendekatan untuk menggantikan hello() dalam struct terbitan B:

Pendekatan #1 (dengan "maya"):

struct B : public A {
    virtual void hello() { ... }
};
Salin selepas log masuk

Pendekatan #2 (tanpa "maya"):

struct B : public A {
    void hello() { ... }
};
Salin selepas log masuk

Pada pandangan pertama, satu-satunya perbezaan antara pendekatan ini ialah kehadiran atau ketiadaan kata kunci "maya" sebelum fungsi hello() yang diganti. Adakah ini membuat sebarang perbezaan fungsi?

Jawapan: Tidak, tiada perbezaan fungsi antara kedua-dua pendekatan ini.

Walaupun menggunakan kata kunci "maya" dalam Pendekatan #1, kedua-dua pendekatan adalah setara dan akan menghasilkan tingkah laku yang sama. Kata kunci "maya" adalah berlebihan dalam kes ini kerana fungsi hello() telah pun diisytiharkan sebagai maya dalam kelas asas A.

Oleh itu, apabila mengatasi fungsi maya dalam kelas terbitan, kata kunci "maya" boleh ditinggalkan tanpa menjejaskan fungsi atau semantik program. Ia hanyalah soal gaya dan keutamaan sama ada mahu menggunakannya atau tidak.

Atas ialah kandungan terperinci Adakah Kata Kunci 'maya' Berlebihan Apabila Mengatasi Fungsi Maya dalam Kelas Terbitan 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